反射_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]

原文地址:https://www.cnblogs.com/dingjm01/p/8318365.html

时间: 2024-08-30 03:30:49

反射_4.案例:使用反射替换对象所有字符串值的相关文章

sed线上经典案例之-同时替换多个字符串

回答网友请教的一个问题:配置文件如下:[aaa]cfg1=aaaxxxx=bbbcfg2=ccccfg3=ddd[bbb]cfg1=eeeyyyy=fffcfg2=gggcfg3=hhhcfg4=iii[ccc]cfg1=jjjzzzz=kkkcfg2=lllcfg2=mmmcfg2=nnn 输出结果:[aaa]cfg1=aaaxxxx=111cfg2=ccccfg3=ddd[bbb]cfg1=eeeyyyy=111cfg2=gggcfg3=hhhcfg4=iii[ccc]cfg1=jjjzzz

java反射获取对象的属性值和对象属性中的子属性值

近段时间在做web项目,前端使用的是jQuery EasyUI. 为方便需要,准备做一个前端通用的Datagird导出Excel功能,博主也考虑过思路和最终功能,1.前端选中行导出:2.当前页导出:3.当前过滤条件导出. 想偷懒在网上找找已有的代码改改,发现大部分只能满足个别需求,使用JS导出只能满足前端,使用代码才能实现3功能. ...... 好了,说了一堆废话,回归正题,本文是在做通用自定义字段导出时所需要,根据属性名去查找对象和子对象,找到对应属性值,抓取回来放到Excel中. 直接上代码

反射入门-浅谈反射用途_根据Ado游标对象创建list集合

本人大二菜鸟一只,今天在上课期间有个同学看着C#反射的内容说反射没什么用,一时之间也想不到什么更好的例子,就写了个根据泛型类型和游标反射创建List集合的Demo. 首先创建一个用于封装对应数据的entity,代码如下. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Test { public

泛型约束和利用反射修改对象属性的值

周日了都,昨天休息了一天,今天想想得敲敲代码练习一下,如下关于泛型约束和利用反射修改对象属性的值的, 都挺简单的,呵呵,但时间一长,不经常使用还容易忘记在此就当记录一下了, 首先泛型代码一般是如下的情形: 加了泛型约束,只允许引用类型并且是只能是无参数的构造函数的类型才能传入,也就是不允许给类构造参数传递实参,否则将报错. 错误 1 “XXXXXX.pros”必须是具有公共的无参数构造函数的非抽象类型,才能用作泛型类型或方法“ 1 public static T GetObject<T>(T

利用反射机制,对对象的属性值进行自动设置

import java.lang.reflect.Method; /** * 对象的属性值自动设置,利用反射机制 */ public class AutoSet { /** * 将源对象的属性值赋值到目标对象,属性名一致,且源对象有get方法,目标对象有set方法 * @param src 源对象 * @param target 目标对象 * @return 赋值后的目标对象 */ public static Object autoGetterAndSetter(Object src, Obje

反射概念:获取class文件对象的三种方式

反射 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 要想解剖一个类,必须先要获取到该类的字节码文件对象.而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象. 利用class文件对象,去使用该文件中的成员变量,构造方法,成员方法. 例子1:获取class文件对象的三种方式 public cla

java反射机制,通过类名获取对象,通过方法名和参数调

try {//得到对象Class c = Class.forName("完整类名");Object yourObj = c.newInstance();//得到方法Method methlist[] = cls.getDeclaredMethods();for (int i = 0; i < methlist.length; i++) {Method m = methlist[i];}//获取到方法对象,假设方法的参数是一个int,method名为setAgeMethod sAg

使用反射设置对象的字段值

package com.sadhu; import java.util.*; import java.lang.reflect.*; /** */ public class Sample {     public static void main(String[] args)throws Exception     {         Class cl = Class.forName("com.sadhu.ReflectTest");         Object rt = cl.ne

反射小案例(菜单的可配置化)

刚开始学反射时,只是知道反射可以获取一个类里的各种信息(字段,属性,方法.....)!前面也只是列举了一些反射的基本语法,下面就通过一个简单小案例体会反射的用法: 注:该案例通过控制台程序完成 反射的基本用法:http://www.cnblogs.com/fengxuehuanlin/p/5274607.html 用的的类库:   调用的主方法: 注:由于是在主方法中调用类库,所以要引用类库这个程序集 控制台程序部分: class Program { static void Main(strin