通过反射 修改访问和修改属性的值 Day25

Posted 清风追梦enjoy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过反射 修改访问和修改属性的值 Day25相关的知识,希望对你有一定的参考价值。

package com.sxt.field;
/*
 * 通过反射拿到属性值
 *       修改public属性值 
 *       修改private属性值
 * 缺点:可读性差;代码复杂
 * 优点:灵活;可以访问修改private属性值
 * 以后多运用setXxx getXxx 修改属性的值
 */
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

public class TestField {
    public static void main(String[] args) throws Exception {
        //设置私有属性值
        Class<?> class1 = Class.forName("com.sxt.entity.Student");
        //创建对象
        Object obj = class1.newInstance();
        Field[] fields = class1.getDeclaredFields();
        //遍历所有属性
        for(Field f : fields){
            System.out.println(f.getName()+"\t"+Modifier.toString(f.getModifiers()));
        }
        System.out.println("----------------------------------");
        
        //修改public的score的属性值
        Field field1 = class1.getDeclaredField("score");
        //直接通过方法(基本数据类型)
        field1.setDouble(obj, 99.9);
        double d = field1.getDouble(obj);
        System.out.println(d);
        
        System.out.println("----------------------------------");
        
        //拿到private的name的属性值
        Field field2 = class1.getDeclaredField("name");
        System.out.println(field2.getName() +" "+ Modifier.toString(field2.getModifiers()));
        //可以改变私有属性值
        field2.setAccessible(true);
        field2.set(obj, "小明");
        Object object = field2.get(obj);
        System.out.println(object);
    }
}

 

以上是关于通过反射 修改访问和修改属性的值 Day25的主要内容,如果未能解决你的问题,请参考以下文章

反射学习3-通过反射机制修改类中的私有属性的值

Python Day28

Python基础day-22[面向对象:反射,其他命令参数]

day7面向对象--反射

Day8 面向对象反射

day07-02-反射