Java 注释处理如何检查 VariableElement 是原始类型(int、float)还是对象 some class

Java Annotation Processing how to check if VariableElement is a primitive type(int, float) or an object some class

我有一个class

public class SomeClass {

    @CustomAnnotation1
    String stringProperty = "LALALA";

    @CustomAnnotation1
    int integerProperty;

    @CustomAnnotation1
    ClassObject classObject;
}

CustomAnnotation1 是我定义的自定义注释,可以放在任何字段上。假设 class ClassObject 类似于

public class ClassObject {

    @CustomAnnotation1
    public String someOtherString;

    public String log;
}

我想要实现的目标 - 如果我的注释放在任何不是原始类型的字段上,我想访问该字段的所有字段class .

我的方法 - 获取所有用 CustomAnnotation1 注释的字段,遍历所有这些字段,如果它是非原始的,则获取其中的所有字段 class 和过程。

我试过的方法 - 我可以在我的 AbstractProcessor class 中使用下面的代码获得所有用我的注释注释的元素。

Collection<? extends Element> annotatedElements = roundEnvironment.getElementsAnnotatedWith(CustomAnnotation1.class);
List<VariableElement> variableElements = ElementFilter.fieldsIn(annotatedElements);

问题 -

VariableElement.asType().getKind().isPrimitive()