Java Annotations Processor 分析表达式?

Java Annotations Processor to analyze expressions?

我一直在研究 Java 注释处理器,取得了很好的效果。 现在我想做以下事情,据我所知这是不可能的。

我有几个 类 实现了构建器模式。比如说

new FooBuilder().doSomething("A").doSomethingElse("B").execute();

使用 execute() 方法终止 "chain" 方法调用至关重要。否则builder基本什么都不做。

所以我想使用 JAP 在编译时验证某些表达式类型上是否存在 execute() 方法。不幸的是,我能检索到的最细粒度的信息似乎是在方法声明级别,而不是表达式。

我想要的完全有可能吗?

Java 的标准注释处理器仅在声明时提供回调,例如方法和字段声明。

可以使用注解处理器来分析表达式,但要多做一些工作。您将必须编写一个注解处理器,在每个方法中获取该方法的 AST(抽象语法树或解析树),然后访问该方法中的每个表达式。 AST 是特定于编译器的。

执行此操作的两个最著名的项目是 Checker Framework and Project Lombok。也许您可以从它们的实现中获得灵感,甚至可以在其中一个之上编写您的注释处理器。