-1
У меня есть экземпляр класса счета (назовем его сущность):Как получить все поля встроенных классов?
private String accountType;
private List<String> attributes = new ArrayList<>();
private Date createdDate;
private ContactInfo contactInfo;
private AccountStatus accountStatus;
Как вы можете видеть, что есть классы «ContactInfo» и «AccountStatus» внутри. Как я могу получить все поля в классе Account и все используемые классы, если у меня есть сущность?
Это то, что я пишу сейчас, которые возвращают только все поля данного объекта.
private static <T> List<Field> getFields(T entity) {
List<Field> fields = new ArrayList<>();
Class clazz = entity.getClass();
PropertyDescriptor[] propertyDescriptors;
try {
propertyDescriptors = Introspector.getBeanInfo(clazz, Object.class).getPropertyDescriptors();
} catch (IntrospectionException e) {
// do something
}
for (PropertyDescriptor pd : propertyDescriptors) {
Field field = null;
Class klass = clazz;
while (klass != null && field == null) {
try {
field = klass.getDeclaredField(pd.getName());
} catch (NoSuchFieldException e) {
klass = klass.getSuperclass();
}
}
fields.add(field);
}
return fields;
}
Просьба уточнить. Вам нужны типы всех полей ('Account')? –
_Вы можете видеть, что существуют классы «ContactInfo» и «AccountStatus» внутри, подразумевает, что эти классы объявлены внутри 'Account'. Кажется, это не так. Вам просто нужны типы полей, объявленные в 'Account'. На какой объект вы ссылаетесь? –
Я уже знаю, как получить поля в классе Account, как мне получить поля «ContactInfo» и «AccountStatus» тоже? –