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