黑马程序员技术交流社区

标题: 反射修改成员变量不成功 [打印本页]

作者: cheye0207    时间: 2014-7-18 00:00
标题: 反射修改成员变量不成功
package Test;

import java.lang.reflect.Field;

public class reflectReplace {
       
        public static void main(String[] args) throws Exception{
                //建立反射对象
                reflectPoint rp=new reflectPoint();
                System.out.println(rp);
                //对对象进行替换(把字符串中的a替换成b)
                ChangeStringValue(rp);
                System.out.println(rp);
        }
        //创造替换方法
        private static void ChangeStringValue(Object obj) throws Exception{
                //获取反射点的成员
                Field[] fields= obj.getClass().getFields();
                //对反射点成员进行循环替换
                for(Field field:fields){
                        //当成员是字符串时进行替换
                        if(field.getType()==String.class){
                                //获取字符串成员,并强转为字符串类型
                                String old= (String)field.get(obj);
                                //替换字符
                                String newString= old.replace('a', 'b');
                                //将旧字符串设定为新的字符串
                                field.set(obj,newString);
                        }
                }
               
        }
}


package Test;
//建立反射类
public class reflectPoint {

        String str1="aaabbb";
        String str2="aaabbb";
        String str3="aaabbb";
       
        public reflectPoint(){
                super();
        }
//重载toString方法
@Override       
        public String toString(){
        return str1+"...."+str2+"...."+str3;
               
        }
}
如下代码,为什么我利用反射修改String的值不成功呢?求解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2