使用AbstractProcessor如何根据类的注解,找到对应类的字段

@Override
public boolean process(Set annotations,
        RoundEnvironment roundEnv) {
    for (Element elem : roundEnv.getElementsAnnotatedWith(FieldConstant.class)) {
        if (elem.getKind() == ElementKind.CLASS) {
            // print fields
            for (Element enclosedElement : elem.getEnclosedElements()) {
                if (enclosedElement.getKind() == ElementKind.FIELD) {
                    Set modifiers = enclosedElement.getModifiers();
                    StringBuilder sb = new StringBuilder();
                    if (modifiers.contains(Modifier.PRIVATE)) {
                        sb.append("private ");
                    } else if (modifiers.contains(Modifier.PROTECTED)) {
                        sb.append("protected ");
                    } else if (modifiers.contains(Modifier.PUBLIC)) {
                        sb.append("public ");
                    }
                    if (modifiers.contains(Modifier.STATIC))
                        sb.append("static ");
                    if (modifiers.contains(Modifier.FINAL))
                        sb.append("final ");
                    sb.append(enclosedElement.asType()).append(" ").append(enclosedElement.getSimpleName());
                    System.out.println(sb);
                }
            }
        }
    }
    ...


使用调用Element的getEnclosedElements()既可以实现,然后可以遍历里面的各个字段。


http://stackoverflow.com/questions/16488210/getting-declared-field-of-annotatted-class-with-annotation-processor

你可能感兴趣的:(android高级学习)