首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Java核心技术点之反射(4)

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());        }
返回列表