标题:
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