从Java类中获取所有声明的字段
方法java.lang.Class.getDeclaredFields()返回一个字段对象数组。这些字段对象包括具有公共,私有,受保护和默认访问权限的对象,但不包括继承的字段。
另外,getDeclaredFields()
如果类或接口没有声明的字段,或者在Class对象中表示原始类型,数组类或void,则该方法返回零长度数组。
演示此的程序如下所示-
示例
package Test; import java.lang.reflect.*; public class Demo { int i; char c; public Demo(int i, char c) { this.i = i; this.c = c; } public static void main(String[] args) { try { Demo obj = new Demo(7, 'A'); Class c = obj.getClass(); Field[] fields = c.getDeclaredFields(); for(int i = 0; i < fields.length; i++) { System.out.println("The field is: " + fields[i].toString()); } } catch(Exception e) { System.out.println(e.toString()); } } }
输出结果
The field is: int Test.Demo.i The field is: char Test.Demo.c
现在让我们了解上面的程序。
在该main()
方法中创建了Demo类的对象。然后,数组fields[]存储使用方法获得的字段对象getDeclaredFields()
。然后使用for循环显示这些字段。演示这的代码片段如下-
Demo obj = new Demo(7, 'A'); Class c = obj.getClass(); Field[] fields = c.getDeclaredFields(); for(int i = 0; i < fields.length; i++) { System.out.println("The field is: " + fields[i].toString()); }