リフレクションによってクラスのすべてのフィールドの値を取得するという問題に直面しています。
以下のように、任意の数のフィールド、任意の数のクラスを持つことができる 1 つのクラスがあり、それらのクラスは任意の数のフィールドを持つことができます。
public class A{
String string;
int number;
HashMap<String,String> map;
B bclass;
}
上記の B は、クラス A のクラス メンバーです。
- String型のフィールドとその値を取得したいのですが、フィールドがクラスの場合
- フィールドが再びクラスの場合、フィールドと値を取得します。たとえば、マッププロパティが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);
}
}
しかし、残念ながら、それは機能していません。助けてください。