一、APT作用的范围以及缺点:
APT = 注解 + 注解处理器(AbstractProcessor)
作用范围:基于java文件去修改为java文件
缺点:生成新的文件需要去使用,代码具有侵略性
二、注解的类型以及应用
Source : APT ------>编译时注解处理器
Class : 插桩 ------->编译后处理筛选
Runtime : 反射-------->运行时动态获取注解信息
三、常见注解器的使用
SupportedAnnotationTypes : 用来过滤处理哪种注解
在builde.gradle里面加上这句话
annotationProcessor project('') ----->这个是倒入你写的那个包
annotationProcessor project('存储路径')
SupportedOptions:这个是再编译时可以动态去获取参数
在builde.gradle里面加上这句话
javaCompileOptions.annotationProcessorOptions.arguments = [module : project.getName() ]
然后代码里processingEnvironment.getOptions().get("module") 可以动态获取
SupportedSourceVersion :支持编译的版本
四、Element常用元素以及API的接口
APT的Element元素常用变量
五、APT常用API的方法
拿到当前的Element可以拿到它的下一个,直到为ExecuteableElement或VariableElement止
对getEnclosedElements() :Package(包)->Type(类)->{Variable(属性)、Executeable(方法)}
拿到当前的Element可以拿到它的上一个,直到为PackageElement止
对getEnclosingElement() : {Executeable(方法)、Variable(属性)}->Type(类)->Package(包)
java类的结构顺序图
六、APT实现Activity、Fragment、Dialog实现数据绑定
这个注解是向Javac里面注册自己定义的注解
import javax.annotation.processing.Processor;
@AutoService(Processor.class)
网址:https://www.jianshu.com/p/899063e8452e 或者去参考java的注解文档
七、APT优化方案
获取生成类的方式执行iRouter.putActivity这个方法,说明key("likeActivity") -- value(LikeActivity) 映射成功
网友评论