APT 编译时注解 知识点

2019-07-20  本文已影响0人  子丿龙

1. 怎么自定义编译时注解的名称(以我的项目 AutoInject 为例)

2. 为什么一般都分为两个库(***-compiler 和 ***-annotation)

因为自定义AbstractProcessor的作用是在编译时生成相关的java源文件的,在程序中最后需要的是他生成的Java文件,最后打包进apk也是他生成的文件,***-compiler 本身是不需要打包的。 但是在 ***-compiler和主工程(用到编译时注解的业务代码工程)中需要对具体的注解类进行操作,所以将具体的注解Annotation放在一个库 ***-annotations中便于引用。

3. 为什么***-compiler工程要建成 java工程

在使用自定义AbstractProcessor需要使用到 javax 包中的相关类和接口,这个在android库中并不存在,所以需要使用到Java库。

4. Element 接口 参数解释

    #获取类名
    Element.getSimpleName().toString(); 
    #获取类的全名
    Element.asType().toString(); 
    #获取所在的包名
    Elements.getPackageOf(Element).asType().toString();
    #获取所在的类
    Element.getEnclosingElement();
    #获取父类
    Types.directSupertypes(Element.asType());
    #获取标注对象的类型
    Element.getKind();

Elment有几个子接口如下:他们的特有方法,用到了自己查一下

    TypeElement:表示一个类或接口程序元素。
    PackageElement:表示一个包程序元素。
    VariableElement:表示一个属性、enum 常量、方法或构造方法参数、局部变量或异常参数。
    ExecutableElement:表示某个类或接口的方法、构造方法或初始化程序(静态或实例),包括注释类型元素。
上一篇 下一篇

猜你喜欢

热点阅读