Board logo

标题: Java核心技术点之反射(4) [打印本页]

作者: look_w    时间: 2019-1-17 19:32     标题: Java核心技术点之反射(4)

5. 通过反射获取类中定义的属性获取属性与获取方法是类似的,只不过 getMethod 函数换成了 getField,getDeclaredMethod 换成了 getDeclaredField 。(1) 获取当前类中定义的属性(不包括从父类继承来的属性)要获取当前类中定义的所有属性(包括private、public、static等各种属性)可以调用 Class对象的getDeclaredFields函数;要想获得指定的属性,可以调用getDeclaredField。如以下代码所示
[url=][/url]
[url=][/url]
1  private static void showDeclaredFields() { 2         Student student = new Student("Bill", 18); 3         // 获取当前类中定义的所有属性并显示出来 4         Field[] fields = student.getClass().getDeclaredFields(); 5         for (Field field : publicFields) { 6             System.out.println("declared field name : " + field.getName()); 7         } 8  9         try {10             // 获取指定的属性11             Field gradeField = student.getClass().getDeclaredField("grade");12             // 获取属性值13             System.out.println("The grade is : " + gradeField.getInt(student));14             // 设置属性值15             gradeField.set(student, 10);16             System.out.println("The grade is : " + gradeField.getInt(student));17         } catch (Exception e) {18             e.printStackTrace();19         }20 }[url=][/url]
[url=][/url]



(2)获取当前类和父类中定义的public属性要获取当前类和父类中定义的所有public 属性可以调用Class对象的getFields 函数,而要获取某个指定的public属性,可以调用getField方法,如以下代码所示:
[url=][/url]
[url=][/url]
private static void showFields() {        Student student = new Student("Bill", 18);        // 获取当前类和父类的所有public属性并显示        Field[] publicFields = student.getClass().getFields();        for (Field field : publicFields) {            System.out.println("field name : " + field.getName());        }




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0