黑马程序员技术交流社区
标题:
反射的问题
[打印本页]
作者:
821728010
时间:
2013-6-5 20:22
标题:
反射的问题
本帖最后由 821728010 于 2013-6-7 19:47 编辑
我想通过反射改变一个类中所有String类型字段的值,这段代码却不成功,哪里有问题?
import java.lang.reflect.*;
public class FsFiled {
public static void main(String[] args)throws Exception{
A a = new A();
Field[] f = a.getClass().getFields();
for(Field ff : f ){
if(ff.getType() == String.class){
String os = (String)ff.get(a);
String ns = os.replace('a','h');
ff.set(a,ns);
System.out.println("consturctor");
}
}
System.out.println(a.str1);
System.out.println(a.str2);
}
}
class A{
String str1 = "java";
String str2 = "abcd";
}
作者:
eycrckag
时间:
2013-6-5 20:34
你设置的是对象的值
作者:
eycrckag
时间:
2013-6-5 20:34
属性上的值还没有设置过来。
作者:
桉树
时间:
2013-6-5 22:59
本帖最后由 桉树 于 2013-6-5 23:12 编辑
因为 A 类中的 str1 和 str2 属性是 protected 的,则在一般情况下是不能被反射的,即你的Field[] 数组是空的。
所以只要将A类中的 str1 和 str2 设置为 public 就可以了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2