我正在使用AspectJ,并且定义了一个切入点来捕获几个类的构造函数方法的执行,如下所示:
pointcut newobject(): execution(class1.new(..) || class2.new(..) || class3.new(..));
然后是
after()returning():newobject(){
,这里我想做不同的事情,这取决于刚刚创建的对象是class1, class2,还是class3是否有一种方法可以在不拆分切入点的情况下引用对象的类型?
切入点语法错误。不能在一个execution
切入点内链接多个方法或构造函数模式。相反,您需要链接多个execution
切入点,或者,如果可能的话,使用像MyClass*
这样的小丑来捕获多个。一个小例子:
pointcut newobject(Object createdObject) :
(execution(class1.new(..)) || execution(class2.new(..)) || execution(class3.new(..)))
&& this(createdObject);
after(Object createdObject) : newobject(createdObject) {
System.out.println(thisJoinPoint);
System.out.println(createdObject);
System.out.println(createdObject.getClass());
}
将this
绑定到变量名之后,您可以对它做任何您喜欢的事情。