3
任何人都可以解釋aspectj中this()
和target()
切入點之間的區別。我嘗試在其他地方找到它,但似乎沒有明確的答案。謝謝This()vs Target()aspectj
任何人都可以解釋aspectj中this()
和target()
切入點之間的區別。我嘗試在其他地方找到它,但似乎沒有明確的答案。謝謝This()vs Target()aspectj
在匹配的連接點上,this()
是您所在的對象,target()
是您調用/引用的對象。可能會出現混淆,因爲在一個聯合點上匹配execution()
切入點的情況下,它們是同一事物 - 包含匹配的執行連接點的對象與運行匹配的方法的對象相同。但在call()
連接點的情況下,它們是不同的。他調用的對象與調用該方法的對象不同。
class A {
public void m() {
B b = new B();
b.n();
}
}
class B {
public void n() {
}
}
對於設置,切入點execution(* m(..))
將匹配連接點A.m()
和具有類型A的this()
和A型的target()
(和他們將是A的相同的實例)。然而,切入點call(* n(..))
將在呼叫站點處在方法A.m()
中匹配,其中它呼叫n()
,並且在該點this()
將是A呼叫的實例,而target()
將是該方法被調用的B的實例。