反射_4.案例:使用反射替換對象所有字符串值
阿新 • • 發佈:2018-01-19
pre abc stack 所有 def 替換字符 rgs 類對象 for
package com.day2; import java.lang.reflect.Field; public class T4_ReflectReplaceString { public static void main(String[] args) { Demo demo1 = new Demo(); try { //調用該方法 reflectReplaceString(demo1); System.out.println(demo1); } catch (Exception e) { e.printStackTrace(); } }/** * 通過反射替換字符串的所有b * * @param demo * 該對象 */ public static void reflectReplaceString(Demo demo) throws Exception { // 1.得到該對象的類對象 Class c = demo.getClass(); // 2.獲取所有屬性對象(包括私有屬性) Field[] fields = c.getDeclaredFields(); // 3.遍歷 for(Field field : fields) { // 4.設置可以訪問私有屬性 field.setAccessible(true); // 5.獲取demo的屬性值 String oldVal = (String) field.get(demo); // 6.替換所有b字符為a字符 String newVal = oldVal.replace("b", "a"); // 7.設置demo的屬性值為newVal field.set(demo, newVal); } } }
Demo.java
package com.day2; public class Demo { private String name = "abcdefg"; private String sex = "boy"; private String wife = "Bob"; @Override public String toString() { return "Demo [name=" + name + ", sex=" + sex + ", wife=" + wife + "]"; } }
控制臺輸出:
Demo [name=aacdefg, sex=aoy, wife=Boa]
反射_4.案例:使用反射替換對象所有字符串值