У меня есть класс
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
, но не смог найти способ проверить, является ли поле примитивным или нет.Можно ли это сделать? - Есть ли лучший способ добиться этого?