zxy0307's picture
Upload 2300 files
0284885 verified
Raw History Blame Contribute Delete
2.4 kB
package Reflect_package1;
import java.lang.reflect.Field;
public class Reflect_demo3 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException {
/*
Class类中用于获取成员变量的方法
Field[] getFields () 返回所有公共成员变量对象的数组
Field[] getDeclaredFields () 返回所有成员变量对象的数组
Field getField (String name) 返回单个公共成员变量对象
Field getDeclaredField (String name) 返回单个成员变量对象
Field类中用于创建对象的方法:
void set (Object obj, Object value) 赋值
Object get (Object obj) 获取值
*/
//1、获取class字节码文件的对象
Class<?> clazz = Class.forName("Reflect_package1.Student");
//2、获取public成员变量
Field[] fields = clazz.getFields();
for (Field field : fields) {
System.out.println(field);
}
System.out.println("=========================");
//3、获取所有的成员变量
Field[] fields2 = clazz.getDeclaredFields();
for (Field field : fields2) {
System.out.println(field);
}
System.out.println("=========================");
//获取单个成员变量
Field g = clazz.getField("gender");
System.out.println(g);
System.out.println("=========================");
//获取权限修饰符
int modifiers = g.getModifiers();
System.out.println(modifiers);
//获取成员变量名
String ge = g.getName();
System.out.println(ge);
//获取成员变量的数据类型
Class<?> type = g.getType();
System.out.println(type);
System.out.println("=========================");
//获取成员变量记录的值
Student s = new Student("zhangsan", 23, "男");
Field name = clazz.getDeclaredField("name");//获取成员变量
name.setAccessible(true);//取消权限修饰符
Object value = name.get(s);
System.out.println(value);
//修改对象里面记录的值
name.set(s, "lisi");
System.out.println(s);
}
}