Как с помощью рефлексии достать поле класса не примитивного типа и не String?
Не очень понял, как можно через рефлексию достать объект, который является полем другого объекта. Абстрактный пример такой.
public class A {
B b;
C c;
D d;
}
Мне нужно получить значение полей объектов b, c, d.
Поля класса A я получаю через Field[] fields = a.getClass().getFields(); Но вот как дальше я не очень понимаю. Если писать
for(Field field : fields)
field.getClass().getFields();
то я получаю поля именно класса Field. Плюс все осложняется все еще тем, что я условно точно знаю, что одно из полей типа B, но я точно не не знаю типы других полей. Т.е. они могут быть C и D, а могут быть E, F.
Ответы (1 шт):
Автор решения: Barmaley Red Star
→ Ссылка
Метод Field.getDeclaringClass() выдает его тип в виде объекта типа Class
for(Field field : fields) {
Class declaringClass = field.getDeclaringClass();
}