gpt4 book ai didi

java - 如何从父类中横切一个方法?

转载 作者:行者123 更新时间:2023-11-30 09:26:04 24 4
gpt4 key购买 nike

父类:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com