zoukankan      html  css  js  c++  java
  • 反射_4.案例:使用反射替换对象所有字符串值

    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]

  • 相关阅读:
    bzoj2946 [Poi2000]公共串(SA,SAM)
    77 最长公共子序列
    C++ lower_bound 与 upper_bound 函数
    76 最长上升子序列
    75 寻找峰值
    C++标准输入问题
    74 第一个错误的代码版本
    73 前序遍历和中序遍历树构造二叉树
    72 中序遍历和后序遍历树构造二叉树
    71 二叉树的锯齿形层次遍历
  • 原文地址:https://www.cnblogs.com/dingjm01/p/8318365.html
Copyright © 2011-2022 走看看