親クラス:
public class Animal {
public String name() {
return "my name";
}
}
子クラス:
public class Dog extends Animal {
// no methods
}
AspectJでへの呼び出しをクロスカットしようとしていますDog.name()
が、機能しません:
@Aspect
public class Crosscut {
@Around("execution(* Dog.name())")
public Object exec(ProceedingJoinPoint point) {
// this point is never reached
}
}
ただし、子メソッドをDog
クラスに追加すると、クロスカットは機能します。
public class Dog extends Animal {
public String name() {
return super.name();
}
}
正しいクロスカットを書く方法は?それともまったく不可能ですか?