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);
}
}
网友评论