参考文章
https://joyrun.github.io/2016/07/18/java-annotation/
https://joyrun.github.io/2016/07/19/AptHelloWorld/
正文
-
注解:
[email protected] : 规定Annotation所修饰的对象范围
ElementType.TYPE:类、接口
ElementType.CONSTRUCTOR:构造器声明
ElementType.FIELD:成员变量、对象、属性(包括enum实例)
ElementType.LOCAL_VARIABLE:局部变量声明
ElementType.METHOD:方法声明
ElementType.PACKAGE:包声明
ElementType.PARAMETER:参数声明
2.Retention:对Annotation的“生命周期”限制
RetentionPolicy.SOURCE:在源文件中有效
RetentionPolicy.CLASS:在class文件中有效
RetentionPolicy.RUNTIME:在运行时有效 ,ps:可以通过反射,获取到该注解的属性值,从而去做一些运行时的逻辑处理
3.Documented: 一个标记注解,没有成员
4.Inherited: 阐述了某个被标注的类型是被继承的
-
demo练习
https://joyrun.github.io/2016/07/19/AptHelloWorld/
涉及到的知识点:
- AutoService:也是一个注解,官方翻译是:An annotation for service providers as described in {@link java.util.ServiceLoader}。主要的作用是注解 processor 类,并对其生成 META-INF 的配置信息。
-
JavaPoet:这个比较熟悉了,这个库的主要作用就是帮助我们通过类调用的形式来生成代码。https://github.com/square/javapoet
ps:
1.使用javaPeot有个技巧,其实就是把要输出的代码,先列出来,在按照javaPoet语法进行代码编写即可。javaPoet的链式调用非常方便阅读。
2.按照,引用,类名,参数,方法名。倒着写,思路更清晰
ok,学着写,使用javapoet成功编译出代码。休息了,改天继续研究
https://github.com/cxMax/AndroidAPT