1. 程式人生 > >反射_4.案例:使用反射替換對象所有字符串值

反射_4.案例:使用反射替換對象所有字符串值

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.案例:使用反射替換對象所有字符串值