可以使用java.lang.Class.getDeclaredFields()方法获取所有已声明字段的列表,因为它返回了一个字段对象数组。这些字段对象包括具有公共,私有,受保护和默认访问权限的对象,但不包括继承的字段。
另外,getDeclaredFields()
如果类或接口没有声明的字段,或者在Class对象中表示原始类型,数组类或void ,则该方法返回零长度数组。
演示此的程序如下所示-
import java.lang.reflect.*; public class Demo { public static void main(String[] argv) throws Exception { Class c = java.lang.String.class; Field[] fields = c.getDeclaredFields(); for(int i = 0; i < fields.length; i++) { System.out.println("The Field is: " + fields[i].toString()); } } }
输出结果
The Field is: private final char[] java.lang.String.value The Field is: private int java.lang.String.hash The Field is: private static final long java.lang.String.serialVersionUID The Field is: private static final java.io.ObjectStreamField[] java.lang.String.serialPersistentFields The Field is: public static final java.util.Comparator java.lang.String.CASE_INSENSITIVE_ORDER
现在让我们了解上面的程序。
类c持有java.lang.String.class.。然后,数组fields []存储使用方法获得的此类的字段对象getDeclaredFields()
。然后使用for循环显示这些字段。演示这的代码片段如下-
Class c = java.lang.String.class; Field[] fields = c.getDeclaredFields(); for(int i = 0; i < fields.length; i++) { System.out.println("The Field is: " + fields[i].toString()); }