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); } }