美文网首页
反射获取成员变量,并修改值ReflectAccess

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

作者: 勇者与王者 | 来源:发表于2019-10-08 00:07 被阅读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);


    }
}

相关文章

网友评论

      本文标题:反射获取成员变量,并修改值ReflectAccess

      本文链接:https://www.haomeiwen.com/subject/usyvpctx.html