黑马程序员技术交流社区
标题:
为什么我的反射运行不出来想要的效果
[打印本页]
作者:
张益达
时间:
2014-6-20 13:41
标题:
为什么我的反射运行不出来想要的效果
import java.lang.reflect.Field;
public class Test {
public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException{
Entity e = new Entity();
Field[] fields = e.getClass().getFields();
for(Field fiel : fields){
if(fiel.getType() == String.class){
String oldString =(String)fiel.get(e);
String newString = oldString.replace('a', 'b');
fiel.set(e, newString);
}
}
System.out.println(e);
}
}
class Entity{
private String a = "aaaa";
private String b = "aaaa";
private String c = "aaaa";
@Override
public String toString(){
return a+ b+c;
}
}
我的反射为什么运行不出来了?
作者:
张益达
时间:
2014-6-20 13:42
我走了断点fields 根本就是空的 这是为什么 ?
作者:
a6217815
时间:
2014-6-20 13:49
你的String 给的是private 其他类怎么访问啊, 要不就改成public 要不就暴力反射
作者:
月光海
时间:
2014-6-20 13:50
因为你的Entity类中属性都是私有的,需要使用getDeclaredFields方法,若要访问和修改还需要设置setAccessiable为true
作者:
张益达
时间:
2014-6-20 14:22
已经成功 多谢了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2