我正在浏览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
所以,我的问题是+符号的意义是什么?因为有和没有+符号,输出是相同的。
答案 0 :(得分:0)
在两种情况下,切入点都应用于方法Stack.pop()
,因为StackSubclass不会覆盖pop()
。