aspectj + sign如何为继承的方法工作?

时间:2015-10-13 18:50:28

标签: java aspectj pointcut

我正在浏览AspectJ。但是,我无法弄清楚在连接点签名中使用+符号。

例如:

call(String Stack+.pop());

自定义堆栈:

public class Stack {

  public String pop() {
    return "abc";
  }

}


public class StackSubclass extends Stack{

}


public aspect SimpleAspect {

  pointcut p1(): call (String Stack+.pop());

  before() : p1() {
    System.out.println("Before advice");
  }
}


public class Main {

    public static void main(String[] args) {
        StackSubclass obj = new StackSubclass();
        System.out.println(obj.pop());
    }

}

输出:

Before advice
abc

没有+符号方面:

public aspect SimpleAspect {

  pointcut p1(): call (String Stack.pop());

  before() : p1() {
    System.out.println("Before advice");
  }
}

输出:

Before advice
abc

所以,我的问题是+符号的意义是什么?因为有和没有+符号,输出是相同的。

1 个答案:

答案 0 :(得分:0)

在两种情况下,切入点都应用于方法Stack.pop(),因为StackSubclass不会覆盖pop()