こんにちは、Java リフレクションの初期値に問題があります。
私は簡単なクラスを持っています
public class A extends B {
private String name;
}
public class B {
private String superName;
}
また、私は単純な機能を持っています:
public void createRandom(Class<T> clazz , List<String> classFields){
try {
T object = clazz.newInstance();
for(String s : classFields){
clazz.getDeclaredField(s);
}
} catch(Exception e){
}
}
私の関数は他のことをしますが、エラーがあるため問題があります:
java.lang.NoSuchFieldException: superName
リフレクションを使用してすべてのクラス フィールドとスーパー クラスのフィールドを設定するにはどうすればよいですか??
私はすべてのクラス フィールド (継承も) を取得し、関数を使用していますfield.set(Object obj, Object value)
が、この方法では継承されたクラス フィールドを設定できません:/
Spring ReflectionUtils.doWithfield を使用しているすべてのクラス フィールドを取得するのに問題はありません。すべてのフィールド名を に保存したList<String> classField
ので、すべての clazz フィールドも継承されていることがわかりました。しかし、私の問題は、すべての clazz フィールドに値を設定する方法です。