繁体   English   中英

Java Annotations Processor 来分析表达式?

[英]Java Annotations Processor to analyze expressions?

我一直在玩 Java Annotation Processors,结果很好。 现在我想做以下事情,据我所知这是不可能的。

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

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

使用execute()方法终止方法调用的“链”至关重要。 否则,builder 基本上什么都不做。

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

我想要的一切可能吗?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM