- <P>希望下面的例子能帮你解开疑惑。你是少了field.set(rtp2, newValue);
- 你需要使用Field对象把修改后的值给设置到对应的对象身上去。
- rtp2 就是你要设置的对象,而newValue就是你要设置的新的值 </P>
- <P>/**
- * 测试要求: 我们使用反射获取ReflectTestPoint字节码文件中的字段,把值里面的bbs更换成wwwweb
- * @param args
- */
- public static void main(String[] args) throws Exception {
- ReflectTestPoint rtp2 = new ReflectTestPoint();
- // 我们先获取字节码文件中的所有的对象
- // 因为我们的bean中是私有的字段所以我们使用DeclaredFields来进行获取
- // Field[] rtps=ReflectTestPoint.class.getDeclaredFields();
- Field[] rtps = rtp2.getClass().getDeclaredFields();
- // 遍历数组
- for (Field field : rtps) {
- // 因为里面有私有的方法所以我们需要开启暴力反射
- field.setAccessible(true); // 开启暴力反射
- // 获取字段的值
- // 如何判断字段的类型了
- // 如果字段是字符串的类型
- if (field.getType() == String.class) {
- // 获取里面的值
- // String oldValue=(String) field.get(new ReflectTestPoint());
- String oldValue = (String) field.get(rtp2);
- System.out.println("字段:" + field.getName() + "原始值:" + oldValue);
- /**
- * 字段都获取出来了 字段:itcastBBs原始值:bbs.itcast.com
- * 字段:itheimaBBs原始值:bbs.itheima.com
- * 字段:itcastWeb原始值:www.itcast.com
- * 字段:itheimaWeb原始值:www.itheima.com
- */
- // String newValue = oldValue.replace('b', 'w');
- String newValue=oldValue.replace("bbs", "www");
- // 将修改后的值设置给对象
- field.set(rtp2, newValue); // 使用字段对象把修改后的值设置给对象ReflectTestPoint中的字段
- System.out.println("更新后的数据:"+rtp2);
- /**
- * 字段:itcastBBs原始值:bbs.itcast.com
- 更新后的数据:wws.itcast.com:::==bbs.itheima.com:::==www.itcast.com:::==www.itheima.com
- 字段:itheimaBBs原始值:bbs.itheima.com
- 更新后的数据:wws.itcast.com:::==wws.itheima.com:::==www.itcast.com:::==www.itheima.com
- 字段:itcastWeb原始值:www.itcast.com
- 更新后的数据:wws.itcast.com:::==wws.itheima.com:::==www.itcast.com:::==www.itheima.com
- 字段:itheimaWeb原始值:www.itheima.com
- 更新后的数据:wws.itcast.com:::==wws.itheima.com:::==www.itcast.com:::==www.itheima.com
- */
- //怎么实现替换字符串了?
- /**
- * 字段:itcastBBs原始值:bbs.itcast.com
- 更新后的数据:www.itcast.com:::==bbs.itheima.com:::==www.itcast.com:::==www.itheima.com
- 字段:itheimaBBs原始值:bbs.itheima.com
- 更新后的数据:www.itcast.com:::==www.itheima.com:::==www.itcast.com:::==www.itheima.com
- 字段:itcastWeb原始值:www.itcast.com
- 更新后的数据:www.itcast.com:::==www.itheima.com:::==www.itcast.com:::==www.itheima.com
- 字段:itheimaWeb原始值:www.itheima.com
- 更新后的数据:www.itcast.com:::==www.itheima.com:::==www.itcast.com:::==www.itheima.com
- */
- }
- }
- }</P>
复制代码
|