Java This()vs Target()aspectj
有人能解释一下aspectj中Java This()vs Target()aspectj,java,aspectj,pointcut,Java,Aspectj,Pointcut,有人能解释一下aspectj中this()和target()切入点之间的区别吗。我试图在别处找到这个问题,但似乎没有一个明确的答案。感谢您在匹配的连接点,this()是您所在的对象,target()是您正在调用/引用的对象。可能会出现混淆,因为在关节点上的execution()切入点匹配的情况下,它们是相同的东西-包含匹配的执行连接点的对象与运行匹配方法的对象相同。但是对于call()连接点,它们是不同的。进行调用的对象与调用方法的对象不同 class A { public void m()
this()
和target()
切入点之间的区别吗。我试图在别处找到这个问题,但似乎没有一个明确的答案。感谢您在匹配的连接点,this()
是您所在的对象,target()
是您正在调用/引用的对象。可能会出现混淆,因为在关节点上的execution()
切入点匹配的情况下,它们是相同的东西-包含匹配的执行连接点的对象与运行匹配方法的对象相同。但是对于call()
连接点,它们是不同的。进行调用的对象与调用方法的对象不同
class A {
public void m() {
B b = new B();
b.n();
}
}
class B {
public void n() {
}
}
对于该设置,切入点执行(*m(..)
将在连接点A.m()
上匹配,并具有类型A的this()
和类型A的target()
(它们将是A的相同实例)。但是,切入点调用(*n(..)
将在方法A.m()
中调用n()
的调用站点匹配,此时this()
将是A进行调用的实例,而target()
将是B的实例,该方法将被调用