方法详细信息
setAccessible public void setAccessible(boolean flag)
复制自类: AccessibleObject描述
将此反射对象的accessible标志设置为指示的布尔值。
值true表示反射对象在使用时应禁止检查Java语言访问控制。
值false表示反射对象在使用时应强制检查Java语言访问控制,并在类描述中注明变体。
C类中的调用者可以使用此方法来访问member的declaring class D如果满足以下任何条件:
C和D属于同一模块。
该成员是public和D是public在一个包中,该模块包含D 输出至少包含C的模块。
所述构件是protected static , D是public在于包含模块的封装D出口到至少包含模块C ,和C是的一个子类D 。
D是一个包,该模块包含D opens至少包含C的模块。 未命名和开放模块中的所有软件包都对所有模块开放,因此当D位于未命名或打开的模块中时,此方法始终成功。
当声明类与调用者位于不同的模块且包含声明类的包未打开时,此方法不能用于启用对私有成员,具有默认(包)访问的成员,受保护的实例成员或受保护的构造函数的访问来电者的模块。
如果有安全管理器,则首先使用ReflectPermission("suppressAccessChecks")权限调用其checkPermission方法。
重写:
setAccessible类
AccessibleObject
参数
flag -
accessible标志的新值
异常
InaccessibleObjectException - 如果无法启用访问权限
SecurityException - 如果安全管理器拒绝请求
另请参见:
AccessibleObject.trySetAccessible() ,
MethodHandles.privateLookupIn(java.lang.Class>, java.lang.invoke.MethodHandles.Lookup)
getDeclaringClass public 类> getDeclaringClass()
返回
类表示声明此表示的字段的类或接口对象
字段对象。
Specified by:
getDeclaringClass在界面
Member
结果
表示底层成员的声明类的对象
getName public String getName()
返回此
字段对象表示的字段的名称。
Specified by:
getName接口
Member
结果
底层成员的简单名称
getModifiers public int getModifiers()
以整数形式返回此字段对象表示的字段的Java语言修饰符。
应该使用Modifier类来解码修饰符。
Specified by:
getModifiers接口
Member
结果
底层成员的Java语言修饰符
另请参见:
Modifier
isEnumConstant public boolean isEnumConstant()
如果此字段表示枚举类型的元素,则返回true ;
否则返回false 。
结果
true当且仅当此字段表示枚举类型的元素时。
从以下版本开始:
1.5
isSynthetic public boolean isSynthetic()
如果此字段是合成字段,则返回true ;
否则返回false 。
Specified by:
isSynthetic在界面
Member
结果
当且仅当此字段是Java语言规范定义的合成字段时才返回true。
从以下版本开始:
1.5
getType public 类> getType()
返回
类对象,该对象标识此
字段对象表示的字段的声明类型。
结果
一个
类对象,标识此对象表示的字段的声明类型
getGenericType public Type getGenericType()
返回一个Type对象,该对象表示此字段对象表示的字段的声明类型。
如果Type是参数化类型,则返回的Type对象必须准确反映源代码中使用的实际类型参数。
如果基础字段的类型是类型变量或参数化类型,则创建它。 否则,它就解决了。
结果
一个
Type对象,表示此
字段对象表示的字段的声明类型
异常
GenericSignatureFormatError - 如果通用字段签名不符合
The Java™ Virtual Machine Specification中指定的格式
TypeNotPresentException - 如果基础字段的泛型类型签名引用了不存在的类型声明
MalformedParameterizedTypeException - 如果基础字段的通用签名引用无法以任何原因实例化的参数化类型
从以下版本开始:
1.5
equals public boolean equals(Object obj)
将此字段与指定的对象进行比较。
如果对象相同,则返回true。
如果两个字段对象由同一个类声明并且具有相同的名称和类型,则它们是相同的。
重写:
equals在类
Object
参数
obj - 要与之比较的引用对象。
结果
true如果此对象与obj参数相同;
否则为false 。
另请参见:
Object.hashCode() , HashMap
hashCode public int hashCode()
返回此字段的哈希字段 。
这被计算为底层字段声明类名及其名称的异或或哈希码。
重写:
hashCode类别
Object
结果
此对象的哈希码值。
另请参见:
Object.equals(java.lang.Object) ,
System.identityHashCode(java.lang.Object)
toString public String toString()
返回描述此字段的字符串。
格式是字段的访问修饰符(如果有),后跟字段类型,后跟空格,后跟声明字段的类的完全限定名称,后跟句点,后跟字段名称。
例如:
public static final int java.lang.Thread.MIN_PRIORITY
private int java.io.FileDescriptor.fd
修饰符按照“Java语言规范”中指定的规范顺序放置。 这是public , protected或private以下顺序,然后再其它改性剂: static , final , transient , volatile 。
重写:
toString类别
Object
结果
描述这个
字段的字符串
See The Java™ Language Specification:
8.3.1场修改器
toGenericString public String toGenericString()
返回描述此字段的字符串,包括其泛型类型。
格式是字段的访问修饰符(如果有),后跟通用字段类型,后跟空格,后跟声明字段的类的完全限定名称,后跟句点,后跟名称领域。
修饰符按照“Java语言规范”中指定的规范顺序放置。 这是public , protected或private以下顺序,然后再其它改性剂: static , final , transient , volatile 。
结果
描述此
字段的字符串,包括其泛型类型
从以下版本开始:
1.5
See The Java™ Language Specification:
8.3.1场修改器
get public Object get(Object obj)
throws IllegalArgumentException,
IllegalAccessException
返回指定对象上此字段表示的字段的值。
如果对象具有基本类型,则该值自动包装在对象中。
基础字段的值如下获得:
如果基础字段是静态字段,则忽略obj参数; 它可能是null。
否则,基础字段是实例字段。 如果指定的obj参数为null,则该方法抛出NullPointerException 。 如果指定的对象不是声明基础字段的类或接口的实例,则该方法抛出IllegalArgumentException 。
如果此字段对象正在强制执行Java语言访问控制,并且基础字段不可访问,则该方法将抛出IllegalAccessException 。 如果基础字段是静态的,则声明该字段的类如果尚未初始化则初始化。
否则,将从基础实例或静态字段中检索该值。 如果字段具有基本类型,则在返回之前将值包装在对象中,否则按原样返回。
如果该字段隐藏在obj类型中,则根据前面的规则获取字段的值。
参数
obj - 从中提取所表示字段值的对象
结果
对象obj表示字段的值;
原始值在返回之前包装在适当的对象中
异常
IllegalAccessException - 如果此
字段对象强制执行Java语言访问控制且基础字段不可访问。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
getBoolean public boolean getBoolean(Object obj)
throws IllegalArgumentException,
IllegalAccessException
获取静态或实例
boolean字段的值。
参数
obj - 从中提取
boolean值的对象
结果
boolean字段的值
异常
IllegalAccessException - 如果此
字段对象强制执行Java语言访问控制且基础字段不可访问。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者通过扩展转换无法将字段值转换为类型
boolean 。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
get(java.lang.Object)
getByte public byte getByte(Object obj)
throws IllegalArgumentException,
IllegalAccessException
获取静态或实例
byte字段的值。
参数
obj - 从中提取
byte值的对象
结果
byte字段的值
异常
IllegalAccessException - 如果此
字段对象强制执行Java语言访问控制且基础字段不可访问。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者通过扩展转换无法将字段值转换为类型
byte 。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
get(java.lang.Object)
getChar public char getChar(Object obj)
throws IllegalArgumentException,
IllegalAccessException
获取类型为
char的静态或实例字段的值,或通过扩展转换获得可转换为类型
char的另一种基本类型的值。
参数
obj - 从中提取
char值的对象
结果
转换为类型
char的字段的值
异常
IllegalAccessException - 如果此
字段对象强制执行Java语言访问控制且基础字段不可访问。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者通过扩展转换无法将字段值转换为类型
char 。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
get(java.lang.Object)
getShort public short getShort(Object obj)
throws IllegalArgumentException,
IllegalAccessException
获取类型为
short的静态或实例字段的值,或通过扩展转换获得可转换为类型
short的另一种基本类型的值。
参数
obj - 从中提取
short值的对象
结果
转换为类型
short的字段的值
异常
IllegalAccessException - 如果此
字段对象强制执行Java语言访问控制且基础字段不可访问。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者通过扩展转换无法将字段值转换为类型
short 。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
get(java.lang.Object)
getInt public int getInt(Object obj)
throws IllegalArgumentException,
IllegalAccessException
获取类型为
int的静态或实例字段的值,或通过扩展转换获得可转换为类型
int的另一种基本类型的值。
参数
obj - 从中提取
int值的对象
结果
转换为类型
int的字段的值
异常
IllegalAccessException - 如果此
字段对象强制执行Java语言访问控制且基础字段不可访问。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者通过扩展转换无法将字段值转换为类型
int 。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
get(java.lang.Object)
getLong public long getLong(Object obj)
throws IllegalArgumentException,
IllegalAccessException
获取类型为
long的静态或实例字段的值,或通过扩展转换获得可转换为类型
long的另一种基本类型的值。
参数
obj - 从中提取
long值的对象
结果
转换为类型
long的字段的值
异常
IllegalAccessException - 如果此
字段对象正在强制执行Java语言访问控制且基础字段不可访问。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者通过扩展转换无法将字段值转换为类型
long 。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
get(java.lang.Object)
getFloat public float getFloat(Object obj)
throws IllegalArgumentException,
IllegalAccessException
获取类型为
float的静态或实例字段的值,或通过扩展转换获得可转换为类型
float的另一种基本类型的值。
参数
obj - 从中提取
float值的对象
结果
转换为类型
float的字段的值
异常
IllegalAccessException - 如果此
字段对象正在强制执行Java语言访问控制且基础字段不可访问。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者通过扩展转换无法将字段值转换为类型
float 。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
get(java.lang.Object)
getDouble public double getDouble(Object obj)
throws IllegalArgumentException,
IllegalAccessException
获取类型为
double的静态或实例字段的值,或通过扩展转换
double可转换为类型
double的另一种基本类型的值。
参数
obj - 从中提取
double值的对象
结果
转换为类型
double的字段的值
异常
IllegalAccessException - 如果此
字段对象正在强制执行Java语言访问控制且基础字段不可访问。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者通过扩展转换无法将字段值转换为类型
double 。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
get(java.lang.Object)
set public void set(Object obj,
Object value)
throws IllegalArgumentException,
IllegalAccessException
将指定对象参数上此字段对象表示的字段设置为指定的新值。
如果基础字段具有基本类型,则新值将自动解包。
该操作如下:
如果基础字段是静态的,则忽略obj参数; 它可能是null。
否则,基础字段是实例字段。 如果指定的对象参数为null,则该方法抛出NullPointerException 。 如果指定的对象参数不是声明基础字段的类或接口的实例,则该方法将抛出IllegalArgumentException 。
如果此字段对象强制执行Java语言访问控制,并且基础字段不可访问,则该方法将抛出IllegalAccessException 。
如果基础字段为final,则该方法抛出IllegalAccessException除非setAccessible(true)已成功执行此字段对象且该字段为非静态字段。 以这种方式设置最终字段仅在反序列化或重建具有空白最终字段的类的实例期间才有意义,然后才能使程序的其他部分访问它们。 在任何其他上下文中使用可能具有不可预测的影响,包括程序的其他部分继续使用该字段的原始值的情况。
如果基础字段是基本类型,则尝试进行解包转换以将新值转换为基本类型的值。 如果此尝试失败,则该方法抛出IllegalArgumentException 。
如果在可能的解包之后,新值无法通过标识或扩展转换转换为基础字段的类型,则该方法将抛出IllegalArgumentException 。
如果基础字段是静态的,则声明该字段的类如果尚未初始化则初始化。
该字段设置为可能未展开和加宽的新值。
如果该字段隐藏在obj类型中,则根据前面的规则设置字段的值。
参数
obj - 应修改其字段的对象
value -用于领域的新值
obj被修改
异常
IllegalAccessException - 如果此
字段对象正在强制执行Java语言访问控制,并且基础字段不可访问或最终。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者解包转换失败。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
setBoolean public void setBoolean(Object obj,
boolean z)
throws IllegalArgumentException,
IllegalAccessException
将字段的值设置为指定对象上的boolean 。
此方法等效于set(obj, zObj) ,其中zObj是Boolean对象和zObj.booleanValue() == z 。
参数
obj - 应修改其字段的对象
z -用于领域的新值
obj被修改
异常
IllegalAccessException - 如果此
字段对象正在强制执行Java语言访问控制,并且基础字段不可访问或最终。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者解包转换失败。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
set(java.lang.Object, java.lang.Object)
setByte public void setByte(Object obj,
byte b)
throws IllegalArgumentException,
IllegalAccessException
将字段的值设置为指定对象上的byte 。
此方法等效于set(obj, bObj) ,其中bObj是Byte对象和bObj.byteValue() == b 。
参数
obj - 应修改其字段的对象
b -用于领域的新值
obj被修改
异常
IllegalAccessException - 如果此
字段对象强制执行Java语言访问控制且基础字段不可访问或最终。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者解包转换失败。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
set(java.lang.Object, java.lang.Object)
setChar public void setChar(Object obj,
char c)
throws IllegalArgumentException,
IllegalAccessException
将字段的值设置为指定对象上的char 。
该方法相当于set(obj, cObj) ,其中cObj是Character对象和cObj.charValue() == c 。
参数
obj - 应修改其字段的对象
c -用于领域的新值
obj被修改
异常
IllegalAccessException - 如果此
字段对象正在强制执行Java语言访问控制,并且基础字段不可访问或最终。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者解包转换失败。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
set(java.lang.Object, java.lang.Object)
setShort public void setShort(Object obj,
short s)
throws IllegalArgumentException,
IllegalAccessException
将字段的值设置为指定对象上的short 。
此方法等效于set(obj, sObj) ,其中sObj是Short对象和sObj.shortValue() == s 。
参数
obj - 应修改其字段的对象
s -用于领域的新值
obj被修改
异常
IllegalAccessException - 如果此
字段对象正在强制执行Java语言访问控制,并且基础字段不可访问或最终。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者解包转换失败。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
set(java.lang.Object, java.lang.Object)
setInt public void setInt(Object obj,
int i)
throws IllegalArgumentException,
IllegalAccessException
将字段的值设置为指定对象上的int 。
此方法等效于set(obj, iObj) ,其中iObj是Integer对象和iObj.intValue() == i 。
参数
obj - 应修改其字段的对象
i -用于领域的新值
obj被修改
异常
IllegalAccessException - 如果此
字段对象正在强制执行Java语言访问控制,并且基础字段不可访问或最终。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者解包转换失败。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
set(java.lang.Object, java.lang.Object)
setLong public void setLong(Object obj,
long l)
throws IllegalArgumentException,
IllegalAccessException
将字段的值设置为指定对象上的long 。
此方法等效于set(obj, lObj) ,其中lObj是Long对象和lObj.longValue() == l 。
参数
obj - 应修改其字段的对象
l -用于领域的新值
obj被修改
异常
IllegalAccessException - 如果此
字段对象正在强制执行Java语言访问控制,并且基础字段不可访问或最终。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者解包转换失败。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
set(java.lang.Object, java.lang.Object)
setFloat public void setFloat(Object obj,
float f)
throws IllegalArgumentException,
IllegalAccessException
将字段的值设置为指定对象上的float 。
该方法相当于set(obj, fObj) ,其中fObj是Float对象和fObj.floatValue() == f 。
参数
obj - 应修改其字段的对象
f -用于领域的新值
obj被修改
异常
IllegalAccessException - 如果此
字段对象正在强制执行Java语言访问控制,并且基础字段不可访问或最终。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者解包转换失败。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
set(java.lang.Object, java.lang.Object)
setDouble public void setDouble(Object obj,
double d)
throws IllegalArgumentException,
IllegalAccessException
将字段的值设置为指定对象上的double 。
此方法等效于set(obj, dObj) ,其中dObj是Double对象和dObj.doubleValue() == d 。
参数
obj - 应修改其字段的对象
d -用于领域的新值
obj被修改
异常
IllegalAccessException - 如果此
字段对象强制执行Java语言访问控制且基础字段不可访问或最终。
IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者解包转换失败。
NullPointerException - 如果指定的对象为null且该字段是实例字段。
ExceptionInInitializerError - 如果此方法引发的初始化失败。
另请参见:
set(java.lang.Object, java.lang.Object)
getAnnotation public
从界面复制的说明: AnnotatedElement
返回该元素的,如果这样的注释
,否则返回null指定类型的注释。
Specified by:
getAnnotation接口
AnnotatedElement
重写:
getAnnotation类
AccessibleObject
参数类型
T - 要查询的注释的类型,如果存在则返回
参数
annotationClass - 与注释类型对应的Class对象
结果
如果此元素上存在指定注释类型,则此元素的注释,否则为null
异常
NullPointerException - 如果给定的注释类为null
从以下版本开始:
1.5
getAnnotationsByType public
返回与此元素关联的注释。
如果没有与此元素关联的注释,则返回值是长度为0的数组。此方法与AnnotatedElement.getAnnotation(Class)之间的区别在于此方法检测其参数是否为可重复注释类型 (JLS 9.6),如果是,则尝试通过“查看”容器注释来查找该类型的一个或多个注释。
此方法的调用者可以自由修改返回的数组;
它对返回给其他调用者的数组没有影响。
Specified by:
getAnnotationsByType ,界面
AnnotatedElement
重写:
getAnnotationsByType在类
AccessibleObject
参数类型
T - 要查询的注释的类型,如果存在则返回
参数
annotationClass - 与注释类型对应的Class对象
结果
如果与此元素关联,则指定注释类型的所有此元素的注释,否则为长度为零的数组
异常
NullPointerException - 如果给定的注释类为null
从以下版本开始:
1.8
getAnnotatedType public AnnotatedType getAnnotatedType()
返回AnnotatedType对象,该对象表示使用类型来指定此Field表示的字段的声明类型。
结果
表示此Field表示的字段的声明类型的对象
从以下版本开始:
1.8