实现APT的核心步骤
1、实现javax.annotation.processing.Processor接口,不过通常继承javax.annotation.processing.AbstractProcessor抽象类
2、核心方法
javax.annotation.processing.AbstractProcessor.process这个方法 主要是用来生成class模板文件或者一些配置文件比如SPI文件或者spring.fatctories文件 通过roundEnv.processingOver()来判断是否处理结束
javax.annotation.processing.AbstractProcessor.getSupportedAnnotationTypes这个方法用来指定要处理哪些注解
注解通常指定为@Retention(RetentionPolicy.SOURCE),仅保留在源级别中,编译器将Java文件编译成class文件时将之遗弃
javax.annotation.processing.AbstractProcessor.getSupportedSourceVersion这个方法用来指定支持哪些JDK版本
javax.annotation.processing.AbstractProcessor.init这个初始方法可以用来获取一些资源 比如Filer
3、Element有哪些类型
- ExecutableElement:表示某个类或接口的方法、构造方法或初始化程序(静态或实例),包括注解类型元素;
- PackageElement:表示一个包程序元素;
- TypeElement:表示一个类或接口程序元素;
- TypeParameterElement:表示一般类、接口、方法或构造方法元素的形式类型参数;
- VariableElement:表示一个字段、enum常量、方法或构造方法参数、局部变量或异常参数