Я использую механизм обработки аннотаций Java для создания сериализаторов для некоторых из моих классов.
Я хотел бы проверить каждое поле обрабатываемого в данный момент класса и убедиться, что это подкласс MyBaseSerializableClass.
Моя проблема в том, что я знаю только, как найти непосредственный суперкласс типа поля:

TypeElement fieldType = (TypeElement)element;
TypeMirror superClassType = fieldType.getSuperclass();

Как мне найти суперкласс superClassType и продолжить движение вверх по дереву наследования, пока я не нажму Object?

1
yurib 24 Янв 2013 в 13:29

1 ответ

Лучший ответ

Ну, я не знаю, лучший ли это способ, но вот решение, которое я нашел:

Types typeUtils = processingEnv.getTypeUtils();
while (!typeElement.toString().equals(Object.class.getName())) {
        element = (TypeElement)typeUtils.asElement(element.getSuperclass());
        // do whatever with element
}
6
yurib 30 Янв 2013 в 19:49