1.首先咱们建立一个OldString类java
package com.iquan.stringreplace; public class OldString { public String aone="basketball"; public String atwo="boring"; private String athree="baidu"; }
咱们经过一个方法来迅速将OldString类中的字符串 中的b替换成a数组
用什么方法最快呢? 这时候咱们想到了Java的反射机制code
package com.iquan.stringreplace; import java.lang.reflect.Field; public class Reflect { private static void changeStringValue(Object obj)throws Exception{ Field[] fields=obj.getClass().getFields(); for(Field field:fields){ if(field.getType()==String.class){ String oldValue=(String)field.get(obj); String newValue=oldValue.replace("b", "a"); field.set(obj, newValue); } } } public static void main(String[] args){ OldString obj=new OldString(); try { Reflect.changeStringValue(obj); System.out.println(obj.aone); System.out.println(obj.atwo); } catch (Exception e) { e.printStackTrace(); } } }
首先用getClass()方法得到字节码 用getFields();方法获取 一个字段集合对象
而后循环遍历数组 比较是不是String字段 three
最后调用String 方法进行替换字符串
设置field的String对象值。get