反射获取成员变量,并修改值ReflectAccess

2019-10-08  本文已影响0人  勇者与王者
package Day32_Reflection;

import java.lang.reflect.Field;

/**
 * @Author quzheng
 * @Date 2019/10/7 22:44
 * @Version 1.0
 *
 * 反射获取成员变量,并修改值
 */
public class ReflectAccess {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException, InstantiationException {
        Class c = Class.forName("Day32_Reflection.Person");

        // 获取成员变量Class类的方法 getFields() Class文件中所有公共成员变量
        // 返回值是 Field[]  Field 类 描述成员变量对象的类
        Field[] fds = c.getFields();
        for (Field f : fds ){
            System.out.println(f);
        }

        // 获取所有声明的成员变量 getDeclaredFields()

        // 获取指定的成员变量 getField(传递字符串类型的变量名)
        Field fname = c.getField("name");
        System.out.println(fname );

        // 调用 Field 类的方法 void set(Object obj, Object value)
        // Object obj 必须有对象
        Object obj = c.newInstance();
        fname.set(obj,"王五");
        System.out.println(obj);


    }
}

上一篇 下一篇

猜你喜欢

热点阅读