【发布时间】:2023-03-25 05:38:01
【问题描述】:
在我的项目中,我有一组类(我不知道其名称和编号),我想向其中添加公共静态方法。
为简单起见,假设我想添加一个返回类的静态记录器实例的静态方法。唯一的要求是静态函数的调用方式如下:
public class Foo {
private static final Logger LOG = LoggerFactor.getLogger(Foo.class);
public static void main(String[] args) {
Foo.getLogger().info("works!");
}
}
因为我认为这是一个跨领域的问题,所以我想在这里解决我与 AspectJ 的问题,但我没有找到任何关于我的场景的信息。
我的问题是:
- 这是否可能?
- 如果可以,您如何实现?
我知道动态声明实现接口的类的父类的可能性,但后来我被卡住了,因为我无法在接口上生成静态方法:
public aspect StaticMethodAspect {
public interface HasStaticMethod {}
declare parents: ... implements HasStaticMethod;
public static Logger HasStaticMethod.getLogger() { //aspect error
...
}
}
我也知道this solution,但是不符合我对方法调用方式的要求。
感谢您的热情回复
【问题讨论】:
标签: java static aop aspectj aspect