天天看点

<android-apt学习笔记>

参考文章

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