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