Я столкнулся с проблемой, чтобы получить значение всех полей класса путем reflaction.Как получить все поля вместе со значением объекта Composite?
У меня есть один класс, который может иметь любое количество полей, любое количество классов и те классы, в свою очередь, может иметь любое количество полей, что-то вроде как ниже
public class A{
String string;
int number;
HashMap<String,String> map;
B bclass;
}
Над B снова класс член класс А.
- Я хочу, чтобы поля типа Струнный и цЕННОСТИ их, и если поле класса
- Если поле класс, затем получите поля и значения, например, map свойство имеет тип HashMap тип класса, тогда мне нужны как свойства ключа, так и значения, которые имеют значение Строка Тип.
Пожалуйста, смотрите мой фрагмент кода, чтобы решить вышеуказанную проблему
private void extractStringFields(Object object) throws IllegalAccessException {
for (Field field : object.getClass().getDeclaredFields()) {
field.setAccessible(true);
System.out.println("filesd : "+field.getName());
Object value = field.get(object);
if (field.getType().equals(String.class)) {
System.out.println(field.getName() + "=" + value);
}
extractStringFields(field);
}
}
Но, к сожалению, его не работает, помогите мне, пожалуйста.
'Java'? Retagged – Andremoniy
У HashMap нет полей/значений типа String (то, что вы смотрите на его общие параметры). Я * верю, что вы спрашиваете, как рекурсивно получить все поля объекта и его содержащиеся переменные. Вопрос в том, что вы должны вернуться в конце? – Perception
Первая проблема заключается в том, что из-за стирания типа общие классы имеют поля типа 'Object'. Вторая проблема заключается в том, что вы, вероятно, не хотите, чтобы какие-либо поля в «HashMap» были закрыты по какой-либо причине. И, наконец, вы, вероятно, захотите назвать рекурсивный метод в 'else' вашим' if' и значением 'field'', а не' '' self'. Кроме того, как вы избежите бесконечных циклов? –