Java 注释处理 - 目的和示例

标签 java annotations apt annotation-processing

玩了好久,还是无法理解Annotation Processing的目的。

我明白为什么运行时需要注释,我能想到的最简单的例子是:

  1. 替换标记界面。
  2. 替换某种类型的市场属性(例如 transient )
  3. 一般来说,任何可以在运行时完成的有用的东西。

但不幸的是,我无法理解在编译时使用注释的任何实际示例/原因(JDK 提供的默认注释除外,例如 @Override 等)。

我不明白使用注释处理器“生成代码”的目的/需要是什么。

编辑:Javadoc/Custom Java doc 是一个实用程序,我可以将其视为使用注释处理器的目的。

最佳答案

这可以用于各种各样的事情。

两个简单的例子

  1. Lombock project .厌倦了编写成千上万的 getter 和 setter?为什么不让注解处理器在编译时完成。
  2. AOP .你可以使用类似 AspectJ 的东西编织依赖于注释的代码。这将在编译后完成,但作为编译过程的一部分。例如Spring AOP@Transactional 注释与 AspectJ 结合使用,围绕标有注释的方法编写事务代码。

还有很多其他用途,但它们通常分为两类

  1. 减少样板代码。
  2. 对于横切关注点。

关于Java 注释处理 - 目的和示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16882035/

相关文章:

java - 我如何处理 Undertow 中的 HTTP 方法?

java - JPA:为什么注释应用于 getter 或字段

python - Dpkg Python 模块?

Java注解处理工具@NoNull

java - AtomicReference<Integer> 与 AtomicInteger 之间有什么区别?

java - 编写 Eclipse Java 调试器脚本?

java - 如何在Parcelable对象中读取/写入int?

java - 互相使用两个 struts2 标签库

java - 即使使用 @Transactional,Hibernate 也无法延迟初始化实体服务中的角色集合和 session

linux - 如何使用 YUM 或 Apt 包管理器在 Linux 中创建安装程序包?