玩了好久,还是无法理解Annotation Processing的目的。
我明白为什么运行时需要注释,我能想到的最简单的例子是:
- 替换标记界面。
- 替换某种类型的市场属性(例如 transient )
- 一般来说,任何可以在运行时完成的有用的东西。
但不幸的是,我无法理解在编译时使用注释的任何实际示例/原因(JDK 提供的默认注释除外,例如 @Override 等)。
我不明白使用注释处理器“生成代码”的目的/需要是什么。
编辑:Javadoc/Custom Java doc 是一个实用程序,我可以将其视为使用注释处理器的目的。
最佳答案
这可以用于各种各样的事情。
两个简单的例子
- Lombock project .厌倦了编写成千上万的 getter 和 setter?为什么不让注解处理器在编译时完成。
- AOP .你可以使用类似 AspectJ 的东西编织依赖于注释的代码。这将在编译后完成,但作为编译过程的一部分。例如Spring AOP将
@Transactional
注释与 AspectJ 结合使用,围绕标有注释的方法编写事务代码。
还有很多其他用途,但它们通常分为两类
- 减少样板代码。
- 对于横切关注点。
关于Java 注释处理 - 目的和示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16882035/