AspectJ: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Riga 39:
execution(void faiqualcosa(int))
La differenza tra un join point di tipo execution e uno di tipo call è molto semplice: un join point di tipo call corrisponde alla chiamata di un metodo da parte di un altro metodo, mentre un join point di tipo execution corrisponde all'
Esistono inoltre molti altri modi per individuare dei join point nel flusso del programma :
Riga 50:
set (byte B.valore )
sono dei join point che denotano, rispettivamente, la lettura dell'attributo
initialization(B.new())
corrisponde alla creazione di un oggetto
initialization(C.new(String,int))
corrisponde alla creazione di un oggetto di classe C
Un altro tipo di join point definito da aspectj è il join corrispondente all
Tale join point si scrive come
adviceexecution()
Ci sono anche altri tipi di join point in aspectj, ma visto che il linguaggio è ancora in evoluzione, qui ci si è limitati a descrivere solo quelli più
In aspectj esistono inoltre delle espressioni che permettono di definire degli insiemi di join point;
l'
call(void conta(..))
corrisponde alla chiamata di un qualsiasi metodo che abbia nome 'conta' e che non restituisca un valore
L'espressione
call(public * doSomething(..))
definisce invece un insieme di join point corrispondenti alla chiamata dei metodi di nome doSomething che siano stati dichiarati come pubblici, che differiscono tra loro per il numero e il tipo degli argomenti; inoltre, i suddetti metodi sono diversi anche per il tipo di dato che ritornano, che può anche essere nullo (esempio: void doSomething(..) ).<br />
Un altro esempio di espressione che codifica una proprietà definente un insieme di join point è il seguente : ▼
▲Un altro esempio di espressione che codifica una proprietà definente un insieme di join point è
call(void A.*(..))
|