当前位置:  开发笔记 > 编程语言 > 正文

This()vs Target()aspectj

如何解决《This()vsTarget()aspectj》经验,为你挑选了1个好方法。

任何人都可以解释aspectj this()target()pointjuts 之间的区别.我尝试在其他地方找到这个,但似乎没有一个明确的答案.谢谢



1> 小智..:

在匹配的连接点,this()target()所在的对象是您正在调用/引用的对象.可能会出现混淆,因为在execution()关节点上的切入点匹配的情况下它们是相同的 - 包含匹配的执行连接点的对象与运行您匹配的方法的对象相同.但是在call()连接点的情况下,它们是不同的.他调用的对象与调用该方法的对象不同.

class A {
  public void m() {
    B b = new B();
    b.n();
  }
}
class B {
  public void n() {
  }
}

对于该设置,切入点execution(* m(..))将在连接点上匹配A.m()并且具有this()类型A和target()类型A(并且它们将是A的相同实例).然而,切入点call(* n(..))将在调用A.m()它的方法中的调用站点处匹配,n()并且此时this()将是进行调用的A的实例,同时target()将是调用该方法的B的实例.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有