現在、私はメソッドの親クラスの呼び出しをキャッチするポイントカットを持っています。サブクラスを捕捉しないポイントカットを作成するにはどうすればよいですか?
私は何を持っていることである:私の継承構造は、Bある
@After("call (public void ParentInterface.method(..)) && target(instance)")
public void intercept(A instance) {
}
はではParentInterfaceです。 私は、pointcutがmethod()へのBの呼び出しのインスタンスをインターセプトしないようにします。これは可能ですか?
編集:のようなforループがありますときにするので
@After("call (public void A.method(..)) && target(instance)")
:
for(ParentInterface obj:list) {
obj.method();
}
コールが原因で傍受されることはない、私はそれをしたくない それを傍受するポイントカットはありません。
pointcutに "if"文を使うことができます:call(public void A.method(..))&& target(instance)&& if(!)インスタンスinstanceofB))。 - https://eclipse.org/aspectj/doc/next/adk15notebook/ataspectj-pcadvice.html – Lin
@Linを参照してください。私がpointcutsでif文を持つことができなかったことに全く気付かず、もっとテストします。私はそうするつもりはないと思うのですが、instanceofというのは、各サブクラスごとに1つずつ含める必要があるからです。おそらく、if(instance.getClass()== A.class)の行に沿って何か試してみるでしょう。ありがとう! – jhwang