黑马程序员技术交流社区
标题:
成员变量反射,将String变量中的“a”替换为“b”
[打印本页]
作者:
李深山
时间:
2012-3-17 14:36
标题:
成员变量反射,将String变量中的“a”替换为“b”
代码如下:
class ReflectPoint {
String str1 = "zhangxiaoxiang";
String str2 = "bixiangdong";
String str3 = "heima";
public static void main(String[] args) {
}
public String toString(){
return "str1 :"+str1+" str2 :"+ str2 +" str3 :" +str3;
}
}
import java.lang.reflect.Field;
public class ReflectTest {
public static void main(String[] args) throws Exception{
ReflectPoint rp=new ReflectPoint();
replaceTest(rp) ;
System.out.println(rp);
}
private static void replaceTest(Object obj) throws Exception {
// TODO Auto-generated method stub
Field[] fields = obj.getClass().getFields();
for(Field f: fields)
{if(f.getType()==String.class)
{ String oldString =(String)f.get(obj);
String newString = oldString.replace('a', 'b');
f.set(obj, newString);
}
}
}
为什么字母改失败了,高手指点?顺便能多多介绍你对反射的理解么?
作者:
李深山
时间:
2012-3-17 15:20
没人帮我么?
作者:
段浩亮
时间:
2012-3-17 15:30
这个问题我遇见过 当时花了我一个多小时才找出原因
getField方法只能获得被public修饰的字段,getDeclaredField(String name)可以返回被任意权限修饰符修饰的字段
作者:
李深山
时间:
2012-3-17 16:31
getField方法只能获得被public修饰的字段,getDeclaredField(String name)可以返回被任意权限修饰符修饰的字段,
楼上正解,谢谢,又了解一招
作者:
泮和顺
时间:
2012-3-19 17:11
本帖最后由 泮和顺 于 2012-3-19 17:15 编辑
1建议用获取声明属性那个方法 2如果是private修饰成员变量要调用一个可访问方法设置成true就行啦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2