Обработка аннотаций Java, как проверить, является ли VariableElement типом примитива (int, float) или объектом некоторого класса - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть класс

public class SomeClass {

    @CustomAnnotation1
    String stringProperty = "LALALA";

    @CustomAnnotation1
    int integerProperty;

    @CustomAnnotation1
    ClassObject classObject;
}

CustomAnnotation1 - это определенная мной пользовательская аннотация, которую можно поместить поверх любого поля.Предположим, что класс ClassObject является чем-то вроде

public class ClassObject {

    @CustomAnnotation1
    public String someOtherString;

    public String log;
}

Чего я хочу достичь - Если моя аннотация помещена в любое поле, которое не является примитивным типом, я хочу получить доступ ко всемполя этого класса.

Мой подход - Получить все поля, помеченные CustomAnnotation1, перебрать все из них и, если оно не примитивно, получить все поля внутри этого классаи обработать.

То, что я пробовал - я могу пометить все элементы аннотацией с помощью приведенного ниже кода в моем классе AbstractProcessor.

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

Вопросы -

  • Я много исследовал класс VariableElement, но не смог найти способ проверить, является ли поле примитивным или нет.Можно ли это сделать?
  • Есть ли лучший способ добиться этого?

1 Ответ

0 голосов
/ 28 ноября 2018

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

...