我一直在尝试 Java 注释处理器,并取得了很好的结果。
现在我想做以下事情,据我所知这是不可能的。
我有几个实现构建器模式的类。比如说
new FooBuilder().doSomething("A").doSomethingElse("B").execute();
至关重要的是,方法调用的“链”必须使用execute()
方法。否则,建设者基本上什么也不做。
所以我想使用 JAP 来验证是否存在execute()
编译时针对某些表达式类型的方法。不幸的是,我可以检索的最细粒度的信息似乎是在方法声明级别,而不是表达式。
我想要的到底有可能吗?
Java 的标准注释处理器仅在声明处提供回调,例如方法和字段声明。
可以使用注释处理器来分析表达式,但工作量更大。您必须编写一个注释处理器,在每个方法中获取该方法的 AST(抽象语法树或解析树),然后访问该方法中的每个表达式。 AST 是特定于编译器的。
执行此操作的两个最著名的项目是检查框架 and 龙目岛计划。也许您可以从他们的实现中获得灵感,甚至可以在其中之一之上编写注释处理器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)