我正在使用 AspectJ,我已经定义了一个切入点来捕获几个类的构造函数方法的执行,如下所示:
pointcut newobject(): execution(class1.new(..) || class2.new(..) || class3.new(..));
那我有
after()returning():newobject(){
在这里我想根据刚创建的对象是 class1、class2 还是 class3 做不同的事情 如果有一种方法可以在此时引用对象的类型而不必拆分切入点?
最佳答案
您的切入点语法错误。您不能在一个 execution
切入点中链接多个方法或构造函数模式。相反,您需要链接多个 execution
切入点,或者如果可能的话,使用像 MyClass*
这样的 clown 来捕获多个切入点。一个小例子:
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
绑定(bind)到变量名后,您可以用它做任何您喜欢的事情。
关于java - 构造函数调用不同类的 AspectJ 切入点 - 识别创建的对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16383922/