A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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;
        }
}
我的反射为什么运行不出来了?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

5 个回复

倒序浏览
我走了断点fields 根本就是空的  这是为什么 ?
回复 使用道具 举报
你的String 给的是private  其他类怎么访问啊, 要不就改成public 要不就暴力反射

点评

我指的是 a b c三个参数  发表于 2014-6-20 13:52
回复 使用道具 举报
因为你的Entity类中属性都是私有的,需要使用getDeclaredFields方法,若要访问和修改还需要设置setAccessiable为true

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
已经成功 多谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马