Java This()vs Target()aspectj

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

有人能解释一下aspectj中
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的实例,该方法将被调用