this(), args(), and target() allow you to bind variables in a type-safe way and to do runtime tests.
E.g., for
void put(Object key, Object value)
you might want to pick out only join points with keys of type foo:
execution(void put(Object, Object)) && args(Foo, Object)
If you were to do something with it (e.g., put Foo in a wrapper with a better hashcode), then you'd want to bind the variable. Without binding (i.e., using reflection) you only get Object, which makes for a lot of runtime ClassCastException.
Wes
What is the most important reason for having args pointcut designator
in
aspectj language? I would prefer exposing args in signature like this
aPointcut(int i): execution( * *.method( int i ) );
The one thing that comes to my mind is
execution( * *.meth( Object) ) && args( String )
That is, however, not an everyday use and can be achieved by type
checking in the advice body.
The reason I go through it is because I want to implement aspectj like
aop. I mean a reasonable subset. I wonder if I could just forget about
args.
Luntain
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users