获取成员变量
思路
- 获取class对象
- 获得Field对象
- 赋值或获取值
获取Field对象
- Field[] getFields(): 返回所有公共成员变量对象的数组
- Field[] getDeclaredFields(): 返回所有成员变量对象的数组
- Field getField(String name): 返回单个公共成员量对象
- Field getDeclaredField(String name): 返回单个成员变量对象
赋值或获取值
- void set(Object obj, Object value): 赋值,给指定对象的成员变量赋值
- Object get(Object obj): 获取值
// 赋值
// 1. 获取Class对象
Class clazz = Class.forName("com.charley.myreflect4.Student");
// 2. 获取Field对象
Field filed = clazz.getField("name");
// 3. 利用set方法进行赋值
// 3.1 先创建一个Student对象
Student student = (Student) clazz.newInstance(); // Class.newInstance()为过时的方法
// 3.2 有了对象才可以给指定对象进行赋值
filed.set(student, "zhangsan");
System.out.println(student);
// 获取值
// 1. 获取Class对象
Class clazz = Class.forName("com.charley.myreflect4.Student");
// 2. 获取Field对象
Field field = clazz.getDeclaredField("money");
// 3. 取消一下访问检查
field.setAccessible(true);
// 4. 调用get方法获取值
// 4.1 创建一个对象
Student student = (Student) clazz.newInstance();
// 4.2 获取对象的money的值
Object o = field.get(student);
// 5. 打印一下
System.out.println(o);