现代Java注释处理

IAm*_*aja 7 java annotations annotation-processing

注释处理仍然是Java 6+的活跃部分,还是已经被弃用/不鼓励/过时的东西.如果过时了,为什么(为什么它不再需要/有用)?如果它仍然非常有用且"活跃"(针对Java 6+ JDK开发的新Java项目仍将从中受益),请确认/更正我如何使用注释处理器的理解:

  1. 你可以创建自己的注释类 @MyAnnotation
  2. 您可以使用标记某些类,方法,字段等 @MyAnnotation
  3. 在构建过程中,您调用自定义MyAnnotationProcessor(如何?)
  4. 处理器扫描您的类路径以查找实例 @MyAnnotation
  5. 通常,注释处理器执行动态字节码注入,即时修改/增强已编译的类

jbu*_*ing 17

  1. 正确.
  2. 正确.
  3. 正确.通常你会延长AbstractProcessor.您可以MyAnnotationProcessor使用ServiceLoader模式指定您的类- 这使得编译器可以发现它.该ProcessorJavadoc中包含有关创建该类的一些信息.
  4. 正确.
  5. 这部分不正确.注释处理器框架不允许您修改类.作为构建的一部分,您将需要使用一些后编译过程来执行此操作.它确实让你做的是创建新的文件.这些可能是简单的资源,新的Java源文件(随后将在同一编译期间需要并且符合注释处理器的条件)或Java类文件.您还可以对源代码执行自定义检查并将错误写入日志(导致编译失败).

我希望能解决你的理解问题.