Java中的反射( 四 )


public class Student {public String name;private String gender;public String toString() {return "Student [name = " + name + " , gender = " + gender + "]";}}public class Demo05 {/*** Field[] getFields();* 获得所有的成员变量对应的Field对象 , 只能获得public的* Field[] getDeclaredFields();* 获得所有的成员变量对应的Field对象 , 包含private的*/@Testpublic void test02(){// 获得Class对象Class<Student> c = Student.class;// 获得所有的成员变量对应的Field对象// Field[] fields = c.getFields();// 获得所有的成员变量对应的Field对象 , 包括privateField[] fields = c.getDeclaredFields();for (Field field : fields) {System.out.println(field);}}/*** Field getField(String name);*根据成员变量名获得对应Field对象 , 只能获得public修饰* Field getDeclaredField(String name);*根据成员变量名获得对应Field对象 , 包含private修饰的*/@Testpublic void test01() throws Exception {// 获得Class对象Class<Student> c = Student.class;// 创建对象Student stu = c.newInstance();// 获得成员变量name对应的Field对象Field f = c.getField("name");// 给成员变量name赋值// 给指定对象stu的name属性赋值为jackf.set(stu,"jack");// 获得指定对象stu成员变量name的值System.out.println(f.get(stu)); // jack//获得成员变量的名字System.out.println(f.getName()); //name// 给成员变量gender赋值// 获得成员变量gender对应的Field对象Field f1 = c.getDeclaredField("gender");// 暴力反射f1.setAccessible(true);// 给指定对象stu的gender属性赋值为男f1.set(stu,"男");System.out.println(stu);}}wx搜索“自律的西瓜L”




推荐阅读