use of cn.xiaoxige.anontation.ClassAnontation in project GitTest by xiaoxige.
the class AnontationProcessor method process.
@Override
public boolean process(Set<? extends TypeElement> set, RoundEnvironment roundEnvironment) {
if (set == null || set.size() <= 0) {
mMessager.printMessage(Diagnostic.Kind.NOTE, "It's TypeElement is null or empty");
return false;
}
for (TypeElement element : set) {
mMessager.printMessage(Diagnostic.Kind.NOTE, element.toString());
}
Set<? extends Element> elementsAnnotatedWith = roundEnvironment.getElementsAnnotatedWith(ClassAnontation.class);
for (Element element : elementsAnnotatedWith) {
// 得到注解标识的是什么玩意(Em. 类,方法, 成员变量...)
ElementKind kind = element.getKind();
mMessager.printMessage(Diagnostic.Kind.NOTE, "kind " + kind.toString());
// 得到注解标识的权限是什么(Em. public, private, static, final ...)
Set<Modifier> modifiers = element.getModifiers();
mMessager.printMessage(Diagnostic.Kind.NOTE, "--> modifiers " + element.getEnclosingElement().toString());
// 得到注释的注解内容(比如获取的值)
ClassAnontation annotation = element.getAnnotation(ClassAnontation.class);
// 表示java编程语中的类型(用这个去判断是int?String?...)
TypeMirror typeMirror = element.asType();
mMessager.printMessage(Diagnostic.Kind.NOTE, "--> typeMirror " + typeMirror.toString());
if (element.getKind().isClass()) {
mMessager.printMessage(Diagnostic.Kind.NOTE, "==>> It's a Class " + element.getSimpleName());
}
if (element.getKind().isField()) {
mMessager.printMessage(Diagnostic.Kind.NOTE, "==> It's a Field ");
}
}
Set<? extends Element> elements = roundEnvironment.getElementsAnnotatedWith(MethodAnontation.class);
for (Element element : elements) {
mMessager.printMessage(Diagnostic.Kind.NOTE, "simpleName " + element.getSimpleName());
mMessager.printMessage(Diagnostic.Kind.NOTE, "--> modifiers " + element.getEnclosingElement().toString());
// 参数
TypeMirror typeMirror = element.asType();
mMessager.printMessage(Diagnostic.Kind.NOTE, "--> typeMirror " + typeMirror.toString());
// 方法
ExecutableElement executableElement = (ExecutableElement) element;
TypeElement enclosingElement = (TypeElement) executableElement.getEnclosingElement();
String qualifiedName = enclosingElement.getQualifiedName().toString();
if (element.getKind() == ElementKind.METHOD) {
mMessager.printMessage(Diagnostic.Kind.NOTE, "==> It's a method ");
}
}
mMessager.printMessage(Diagnostic.Kind.NOTE, "-------------------------------------------");
Set<? extends Element> annotatedWith = roundEnvironment.getElementsAnnotatedWith(Method2Anontation.class);
for (Element element : annotatedWith) {
mMessager.printMessage(Diagnostic.Kind.NOTE, "simpleName " + element.getSimpleName());
mMessager.printMessage(Diagnostic.Kind.NOTE, "--> modifiers " + element.getEnclosingElement().toString());
// 参数
TypeMirror typeMirror = element.asType();
mMessager.printMessage(Diagnostic.Kind.NOTE, "--> typeMirror " + typeMirror.toString());
// 方法
ExecutableElement executableElement = (ExecutableElement) element;
TypeElement enclosingElement = (TypeElement) executableElement.getEnclosingElement();
String qualifiedName = enclosingElement.getQualifiedName().toString();
if (element.getKind() == ElementKind.METHOD) {
mMessager.printMessage(Diagnostic.Kind.NOTE, "==> It's a method ");
}
}
return true;
}
Aggregations