黑马程序员技术交流社区
标题:
反射——通过反射实现修改对象成员变量值
[打印本页]
作者:
bowen-xiao
时间:
2015-1-17 20:44
标题:
反射——通过反射实现修改对象成员变量值
实现:通过反射修改一个对象里面的所有String类型的成员,将变量值中的b修改成a
一、创建一个需要被反射的类,里面有多个已经有默认值String类型的成员变量
public class Demo {
public int x ;
private int y ;
public String str1 = "table";
public String str2 = "basketable";
public String str3 = "itast";
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
@Override
public String toString() {
return "Demo [str1=" + str1 + ", str2=" + str2 + ", str3=" + str3 + "]";
}
}
复制代码
二、编写测试方法,并实现其功能
public void changValue() throws Exception{
Demo demo = new Demo();//初始化实例
//要求将 demo类中所有String 字段,值中所有的b替换成a
Field[] fields = demo.getClass().getFields();
for (Field field : fields) {
// if(field.getType().equals(String.class)这种写法有问题两个字节码比较
if(field.getType() == (String.class)){
String oldValue = (String)field.get(demo);
// 值替换
String newValue = oldValue.replace("b", "a");
// 将修改后的值设置回对象中去
field.set(demo, newValue);
}
}
// 打印输出结果
System.out.println(demo);
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2