Как с помощью рефлексии достать поле класса не примитивного типа и не 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();
}
→ Ссылка