【发布时间】:2012-09-19 15:18:16
【问题描述】:
可能重复:
Access to private inherited fields via reflection in Java
您好,我遇到了 java 反射的 init 值问题。
我有简单的课程
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 字段设置值。
【问题讨论】:
-
你是如何调用
createRandom()的?clazz和列表的值是什么?
标签: java reflection