黑马程序员技术交流社区
标题:
反射修改成员变量不成功
[打印本页]
作者:
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