Предположим, у меня есть несколько классов в этом стиле:
public class A {
public B element;
}
public class B {
public C anotherElement; // where C refers to another type which contains types D, E, F, etc.....
}
Я хочу перебрать все содержащиеся в нем подклассы (не унаследованные) и получить список всех полей в дереве вложенных объектов. Однако, когда я использую код отражения следующим образом:
Field[] myFields = providedObject.getClass().getDeclaredFields();
for (Field myField : myFields) {
// do something here?? to access the sub-fields of the class
// if I print out myField.getName(), I get the element of class A, but I also want to access the anotherElement of class B (without hard-coding the name 'anotherElement', I want a full traversal of all nested fields)
}
На шаге «сделать что-то здесь» я хочу получить доступ к подполям myField, но я ничего не вижу в API поля это напрямую позволяет мне сделать это. Я попытался:
myField.getDeclaringClass (). GetDeclaredFields () -> это, кажется, возвращает тот же элемент, который мы уже видели, а не подэлементы
и
myField.getClass (). GetDeclaredFields () -> это, кажется, возвращает поля класса 'Field', а не моего класса A или B
Так как бы я мог получить доступ к вложенным полям из API-интерфейса отражения ?
Спасибо.