AbstractProcessor 注解处理器相关

1. google 提供了一个注册处理器的库:用于生产 meta-inf 信息


compile 'com.google.auto.service:auto-service:1.0-rc2'

一个注解搞定:


@AutoService(Processor.class)

public class MyProcessor extends AbstractProcessor {

...

}

2. 项目结构:


----bindview-annotation(Java Library)

----bindview-api(Android Library)

----bindview-compiler(Java Library)

----app(Android App)

bindview-annotation 注解声明

bindview-api 调用Android SDK API

bindview-compiler 注解处理器相关

app 测试App

3. Element 概念


package com.example; // 包PackageElement

public class MyClass { // 类TypeElement

private int a; // 变量VariableElement

private Foo other; // 变量VariableElement

public Foo () {} // 方法ExecuteableElement

public void setA ( // ExecuteableElement

int newA // TypeElement

) {

}

}

4.getname 方法的区别:

总结:getName()和 getCanonicalName() 只有数组和内部类的表现不一样。

详细参考

以下顺序为:

getName()

getCanonicalName()

getSimpleName()


******************************** 普通类 ****************************************

com.ershuai.stu.other.TestClass

com.ershuai.stu.other.TestClass

TestClass

******************************** 普通类 List ****************************************

java.util.ArrayList

java.util.ArrayList

ArrayList

******************************* Integer.class *****************************************

java.lang.Integer

java.lang.Integer

Integer

******************************** int .class ****************************************

int

int

int

******************************** 普通类 array - 有区别 ****************************************

[Lcom.ershuai.stu.other.TestClass;

com.ershuai.stu.other.TestClass[]

TestClass[]

******************************** 内部类 - 有区别 ****************************************

com.ershuai.stu.other.Test0$NTestClass

com.ershuai.stu.other.Test0.NTestClass

NTestClass