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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cheye0207 中级黑马   /  2014-7-18 00:00  /  1090 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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的值不成功呢?求解

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马