java.lang.Class.getDeclaredFields() 方法返回 Field 对象数组,反映该类声明的所有字段或此 Class 对象表示的接口。这包括公共、受保护、默认(包)访问和私有字段,但不包括继承的字段。
如果此 Class 对象表示没有声明字段的类或接口,则此方法返回一个长度的数组0. 如果此 Class 对象表示数组类型、基本类型或 void,则此方法返回长度为 0 的数组。
语法
public Field[] getDeclaredFields()
throws SecurityException
参数
不需要参数。
返回值
返回代表此类所有声明字段的 Field 对象数组。
Exception
如果存在安全管理器 s 并且满足以下任一条件,则抛出 SecurityException:
- 调用者的类加载器与此类的类加载器不同,并且使用 RuntimePermission("accessDeclaredMembers") 调用 s.checkPermission 方法会拒绝访问此类中已声明的字段。
- 调用者的类加载器不是与当前类的类加载器相同或为祖先,并且调用 s.checkPackageAccess() 拒绝访问此类的包。
示例:
下面的示例显示了 java.lang.Class.getDeclaredFields() 方法的用法。
import java.lang.*;
import java.lang.reflect.*;
public class MyClass {
public static void main(String[] args) {
try {
Class cls = Class.forName("java.lang.Boolean");
//打印可访问的公共方法
Field f[] = cls.getDeclaredFields();
System.out.println("Fields are: ");
for(Field i: f)
System.out.println(i);
} catch (Exception e) {
System.out.println(e);
}
}
}
上述代码的输出将是:
Fields are:
public static final java.lang.Boolean java.lang.Boolean.TRUE
public static final java.lang.Boolean java.lang.Boolean.FALSE
public static final java.lang.Class java.lang.Boolean.TYPE
private final boolean java.lang.Boolean.value
private static final long java.lang.Boolean.serialVersionUID