作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
父类:
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();
}
}
如何写出正确的横切面?或者根本不可能?
最佳答案
由于 aspectj 没有在此处创建新方法,因此它将无法匹配 Dog.name()
。您需要做的是在 Animal.name()
上声明建议并使用 this(...)
使 aspectj 添加运行时 instanceof 检查。
尝试@Around("执行(* Animal.name()) && this(Dog)")
关于java - 如何从父类中横切一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15064982/
我是一名优秀的程序员,十分优秀!