1.概述
看这篇文章先看实战:【java】java JSR 269 自定义注解实战 Lombok @Data注解 先看实战在看原理,比较容易理解。
注解( Annotation)第- -次是在JDK1.5中被引入进来的,当时开发者只能在运行期处理注解。JDK1.6引人了JSR269规范,允许开发者在编译期间对注解进行处理,可以读取、修改、添加抽象语法树中的内容。只要有足够的想象力,利用JSR269可以完成很多Java语言不支持的特性,甚至创造新的语法糖。
javac的编译过程如图8-1所示。
javac
的前两个阶段parse和enter生成了抽象语法树( AST),接下来进人annotation process (注解处理)阶段,JSR 269就发生在这个阶段。经过注解处理后输出一个修改过的AST,交给下游阶段继续处理,直至生成最终的class文件。
实现注解处理器的第一步 是继承AbstractProcessor 类,实现它的process方法,如下面的代码清单8-1所示。
SupportedAnnotationTypes