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