- 所有已实现的接口:
-
AnnotatedElement
,Member
Field
提供了关于类或接口的单个字段的信息和动态访问。反射字段可以是类(静态)字段或实例字段。
Field
允许在获取或设置访问操作期间进行扩展转换,但如果发生缩小转换,则会抛出IllegalArgumentException
。
- 自:
- 1.1
- 参见:
-
Field Summary
-
Method Summary
Modifier and TypeMethodDescription返回此字段的Field
的不可修改的访问标志集,可能为空。boolean
将此Field
与指定对象进行比较。返回由此Field
表示的字段的值,位于指定对象上。返回一个AnnotatedType对象,该对象表示用于指定由此Field表示的字段的声明类型的类型的使用。<T extends Annotation>
TgetAnnotation
(Class<T> annotationClass) 如果此注释存在,则返回指定类型的此元素的注释,否则返回null。<T extends Annotation>
T[]getAnnotationsByType
(Class<T> annotationClass) 返回与此元素关联的注释。boolean
getBoolean
(Object obj) 获取静态或实例boolean
字段的值。byte
获取静态或实例byte
字段的值。char
获取类型为char
或通过扩展转换可转换为char
类型的另一种原始类型的静态或实例字段的值。Class
<?> 返回表示声明由此Field
对象表示的字段的类或接口的Class
对象。double
获取类型为double
或通过扩展转换可转换为double
类型的另一种原始类型的静态或实例字段的值。float
获取类型为float
或通过扩展转换可转换为float
类型的另一种原始类型的静态或实例字段的值。返回一个Type
对象,该对象表示由此Field
对象表示的字段的声明类型。int
获取类型为int
或通过扩展转换可转换为int
类型的另一种原始类型的静态或实例字段的值。long
获取类型为long
或通过扩展转换可转换为long
类型的另一种原始类型的静态或实例字段的值。int
返回由此Field
对象表示的字段的Java语言修饰符,作为整数。getName()
返回由此Field
对象表示的字段的名称。short
获取类型为short
或通过扩展转换可转换为short
类型的另一种原始类型的静态或实例字段的值。Class
<?> getType()
返回一个Class
对象,该对象标识由此Field
对象表示的字段的声明类型。int
hashCode()
返回此Field
的哈希码。boolean
如果此字段表示枚举类的元素,则返回true
;否则返回false
。boolean
如果此字段是合成字段,则返回true
;否则返回false
。void
将由此Field
对象表示的字段设置为指定对象参数的指定新值。void
setAccessible
(boolean flag) 将此反射对象的accessible
标志设置为指定的布尔值。void
setBoolean
(Object obj, boolean z) 将字段作为boolean
在指定对象上设置为值。void
将字段作为byte
在指定对象上设置为值。void
将字段作为char
在指定对象上设置为值。void
将字段作为double
在指定对象上设置为值。void
将字段作为float
在指定对象上设置为值。void
将字段作为int
在指定对象上设置为值。void
将字段作为long
在指定对象上设置为值。void
将字段作为short
在指定对象上设置为值。返回描述此Field
的字符串,包括其通用类型。toString()
返回描述此Field
的字符串。Methods declared in class java.lang.reflect.AccessibleObject
canAccess, getAnnotations, getDeclaredAnnotation, getDeclaredAnnotations, getDeclaredAnnotationsByType, isAccessible, isAnnotationPresent, setAccessible, trySetAccessible
-
Method Details
-
setAccessible
public void setAccessible(boolean flag) 从类中复制的描述:AccessibleObject
将此反射对象的accessible
标志设置为指定的布尔值。值为true
表示反射对象在使用时应该抑制Java语言访问控制检查。值为false
表示反射对象在使用时应该执行Java语言访问控制检查,注意类描述中指出的变化。调用者在类
C
中可以使用此方法来启用对声明类
D
的成员
的访问,如果满足以下任何条件:C
和D
在同一模块中。- 成员是
public
的,D
在将D
包含的模块至少导出
到包含C
的模块。 - 成员是
protected
static
的,D
在将D
包含的模块至少导出
到包含C
的模块,并且C
是D
的子类。 D
在将D
包含的模块至少打开
到包含C
的模块。未命名模块和打开模块中的所有包都对所有模块开放,因此当D
在未命名或打开模块中时,此方法始终成功。
JNI代码可以使用此方法,堆栈上没有调用者类,以启用对
声明类
D
的成员
的访问,仅当:- 成员是
public
的,D
在将D
包含的模块无条件导出
。
此方法不能用于启用对私有成员、具有默认(包)访问权限的成员、受保护的实例成员或受保护的构造函数的访问权限,当声明类与调用者的模块不同且包含声明类的包对调用者的模块不开放时。
此方法不能用于启用对不可修改的最终字段的写访问。以下字段是不可修改的:
当
accessible
标志为true
时,仅抑制Java语言访问控制检查以仅启用对这些不可修改的最终字段的读访问。如果存在安全管理器,则首先调用其
checkPermission
方法,其中包含ReflectPermission("suppressAccessChecks")
权限。- 覆盖:
-
setAccessible
在类AccessibleObject
中 - 参数:
-
flag
-accessible
标志的新值 - 抛出:
-
InaccessibleObjectException
- 如果无法启用访问权限 -
SecurityException
- 如果安全管理器拒绝请求 - 外部规范
- 参见:
-
getDeclaringClass
返回表示由此Field
对象表示的字段的类或接口的Class
对象。- 指定者:
-
getDeclaringClass
在接口Member
中 - 返回:
- 表示底层成员的声明类的对象
-
getName
Returns the name of the field represented by thisField
object. -
getModifiers
public int getModifiers()返回表示此Field
对象的字段的Java语言修饰符,以整数形式。应使用Modifier
类来解码修饰符。- 指定者:
-
getModifiers
在接口Member
中 - 返回:
- 底层成员的Java语言修饰符
- 参见 Java语言规范:
-
8.3 字段声明
9.3 字段(常量)声明
- 另请参见:
-
accessFlags
返回此字段的 访问标志 的不可修改集合,可能为空。- 指定者:
-
accessFlags
在接口Member
中 - 返回:
- 此字段的 访问标志 的不可修改集合,可能为空
- 参见 Java虚拟机规范:
-
4.5 字段
- 自:
- 20
- 另请参见:
-
isEnumConstant
public boolean isEnumConstant()如果此字段表示枚举类的元素,则返回true
;否则返回false
。- 返回:
-
如果此字段仅表示枚举类的元素,则返回
true
。 - 参见 Java语言规范:
-
8.9.1 枚举常量
- 自:
- 1.5
-
isSynthetic
public boolean isSynthetic()如果此字段是合成字段,则返回true
;否则返回false
。- 指定者:
-
isSynthetic
在接口Member
中 - 返回:
- 如果此字段是由Java语言规范定义的合成字段,则返回true。
- 自:
- 1.5
- 另请参见:
-
getType
返回一个标识由此Field
对象表示的字段的声明类型的Class
对象。- 返回:
-
一个标识由此对象表示的字段的声明类型的
Class
对象
-
getGenericType
返回一个代表由此Field
对象表示的字段的声明类型的Type
对象。如果字段的声明类型是参数化类型,则返回的
Type
对象必须准确反映源代码中使用的实际类型参数。如果底层字段的类型是类型变量或参数化类型,则会创建它。否则,它会被解析。
- 返回:
-
代表由此
Field
对象表示的字段的声明类型的Type
对象 - 抛出:
-
GenericSignatureFormatError
- 如果通用字段签名不符合 Java虚拟机规范 中指定的格式 -
TypeNotPresentException
- 如果底层字段的通用类型签名引用不存在的类或接口声明 -
MalformedParameterizedTypeException
- 如果底层字段的通用签名引用参数化类型,但由于任何原因无法实例化 - 自:
- 1.5
-
equals
将此Field
与指定对象进行比较。如果对象相同,则返回true。如果两个Field
对象由同一类声明并且具有相同的名称和类型,则它们相同。 -
hashCode
public int hashCode()返回此Field
的哈希码。计算方法是底层字段的声明类名称和字段名称的哈希码的异或。 -
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
。- 覆盖:
-
toString
在类Object
中 - 返回:
-
描述此
Field
的字符串 - 参见 Java语言规范:
-
8.3.1 字段修饰符
-
toGenericString
返回描述此Field
的字符串,包括其通用类型。格式为字段的访问修饰符(如果有),后跟通用字段类型,后跟一个空格,后跟声明字段的类的完全限定名称,后跟一个句点,后跟字段的名称。修饰符按照《Java语言规范》规定的规范顺序放置。首先是
public
、protected
或private
,然后是以下顺序的其他修饰符:static
、final
、transient
、volatile
。- 返回:
-
描述此
Field
的字符串,包括其通用类型 - 参见 Java语言规范:
-
8.3.1 字段修饰符
- 自:
- 1.5
-
get
返回由此Field
表示的字段在指定对象上的值。如果值具有原始类型,则自动将其包装在对象中。底层字段的值获取方式如下:
如果底层字段是静态字段,则忽略
obj
参数;它可以为null。否则,底层字段是实例字段。如果指定的
obj
参数为null,则该方法会抛出NullPointerException
。如果指定的对象不是声明底层字段的类或接口的实例,则该方法会抛出IllegalArgumentException
。如果此
Field
对象正在执行Java语言访问控制,并且底层字段不可访问,则该方法会抛出IllegalAccessException
。如果底层字段是静态的,则声明该字段的类将在尚未初始化的情况下初始化。否则,从底层实例或静态字段检索值。如果字段具有原始类型,则在返回之前将该值包装在对象中,否则按原样返回。
如果字段在
obj
的类型中被隐藏,则根据前述规则获取字段的值。- 参数:
-
obj
- 要提取其表示字段值的对象 - 返回:
-
对象
obj
中表示字段的值;在返回之前,原始值将被包装在适当的对象中 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段不可访问。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者)。 -
NullPointerException
- 如果指定的对象为null且字段是实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。
-
getBoolean
获取静态或实例boolean
字段的值。- 参数:
-
obj
- 从中提取boolean
值的对象 - 返回:
-
boolean
字段的值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段不可访问。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换转换为类型boolean
。 -
NullPointerException
- 如果指定的对象为null且字段是实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
getByte
获取静态或实例byte
字段的值。- 参数:
-
obj
- 从中提取byte
值的对象 - 返回:
-
byte
字段的值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段不可访问。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换转换为类型byte
。 -
NullPointerException
- 如果指定的对象为null且字段是实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
getChar
获取静态或实例char
类型字段的值,或通过扩展转换转换为类型char
的另一种原始类型的字段值。- 参数:
-
obj
- 从中提取char
值的对象 - 返回:
-
转换为类型
char
的字段值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段不可访问。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换转换为类型char
。 -
NullPointerException
- 如果指定的对象为null且字段是实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
getShort
获取静态或实例short
类型字段的值,或通过扩展转换转换为类型short
的另一种原始类型的字段值。- 参数:
-
obj
- 从中提取short
值的对象 - 返回:
-
转换为类型
short
的字段值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段不可访问。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换转换为类型short
。 -
NullPointerException
- 如果指定的对象为null且字段是实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
getInt
获取静态或实例int
类型字段的值,或通过扩展转换转换为类型int
的另一种原始类型的字段值。- 参数:
-
obj
- 从中提取int
值的对象 - 返回:
-
转换为类型
int
的字段值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段不可访问。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换转换为类型int
。 -
NullPointerException
- 如果指定的对象为null且字段是实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
getLong
获取静态或实例long
类型字段的值,或通过扩展转换转换为类型long
的另一种原始类型的字段值。- 参数:
-
obj
- 从中提取long
值的对象 - 返回:
-
转换为类型
long
的字段值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段不可访问。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换转换为类型long
。 -
NullPointerException
- 如果指定的对象为null且字段是实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
getFloat
获取静态或实例float
类型字段的值,或通过扩展转换转换为类型float
的另一种原始类型的字段值。- 参数:
-
obj
- 从中提取float
值的对象 - 返回:
-
转换为
float
类型的字段值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段不可访问。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换为float
类型。 -
NullPointerException
- 如果指定的对象为null且字段为实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
getDouble
获取类型为double
或通过扩展转换为double
的其他原始类型的静态或实例字段的值。- 参数:
-
obj
- 从中提取double
值的对象 - 返回:
-
转换为
double
类型的字段值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段不可访问。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换为double
类型。 -
NullPointerException
- 如果指定的对象为null且字段为实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
set
将此Field
对象表示的字段设置为指定对象参数上的指定新值。如果底层字段具有原始类型,则新值将自动解包。操作如下进行:
如果底层字段是静态的,则忽略
obj
参数;它可以为null。否则,底层字段是实例字段。如果指定的对象参数为null,则该方法会抛出
NullPointerException
。如果指定的对象参数不是声明底层字段的类或接口的实例,则该方法会抛出IllegalArgumentException
。如果此
Field
对象正在执行Java语言访问控制,并且底层字段不可访问,则该方法会抛出IllegalAccessException
。如果底层字段是final的,则仅当满足以下条件时,此
Field
对象具有写访问权限:setAccessible(true)
对此Field
对象成功;- 字段非静态;且
- 字段的声明类不是隐藏类;且
- 字段的声明类不是记录类。
IllegalAccessException
。以这种方式设置最终字段仅在类的实例在程序的其他部分访问之前进行反序列化或重建期间才有意义。在任何其他上下文中使用可能会产生不可预测的效果,包括其他程序部分继续使用该字段的原始值的情况。
如果底层字段是原始类型,则会尝试进行解包转换以将新值转换为原始类型的值。如果此尝试失败,则该方法会抛出
IllegalArgumentException
。如果在可能的解包后,新值无法通过标识或扩展转换转换为底层字段的类型,则该方法会抛出
IllegalArgumentException
。如果底层字段是静态的,则在尚未初始化的情况下初始化声明字段的类。
字段设置为可能解包和扩展的新值。
如果字段在
obj
类型中被隐藏,则根据前述规则设置字段的值。- 参数:
-
obj
- 应修改其字段的对象 -
value
- 要修改的obj
字段的新值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段不可访问或为final;或者如果此Field
对象没有写访问权限。 -
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
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段不可访问或为final;或者如果此Field
对象没有写访问权限。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者解包转换失败。 -
NullPointerException
- 如果指定的对象为null且字段为实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
setByte
将字段的值设置为byte
类型的值在指定对象上。此方法等效于set(obj, bObj)
,其中bObj
是一个Byte
对象且bObj.byteValue() == b
。- 参数:
-
obj
- 应修改其字段的对象 -
b
- 要修改的obj
字段的新值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段不可访问或为final;或者如果此Field
对象没有写访问权限。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者解包转换失败。 -
NullPointerException
- 如果指定的对象为null且字段为实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
setChar
将字段的值设置为char
类型的值在指定对象上。此方法等效于set(obj, cObj)
,其中cObj
是一个Character
对象且cObj.charValue() == c
。- 参数:
-
obj
- 应修改其字段的对象 -
c
- 要修改的obj
字段的新值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段是不可访问或final;或者如果此Field
对象没有写访问权限。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现类),或者解包转换失败。 -
NullPointerException
- 如果指定的对象为null且字段为实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
setShort
将字段的值设置为short
在指定的对象上。此方法等效于set(obj, sObj)
,其中sObj
是一个Short
对象,且sObj.shortValue() == s
。- 参数:
-
obj
- 应修改其字段的对象 -
s
- 要修改的obj
字段的新值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段是不可访问或final;或者如果此Field
对象没有写访问权限。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现类),或者解包转换失败。 -
NullPointerException
- 如果指定的对象为null且字段为实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
setInt
将字段的值设置为int
在指定的对象上。此方法等效于set(obj, iObj)
,其中iObj
是一个Integer
对象,且iObj.intValue() == i
。- 参数:
-
obj
- 应修改其字段的对象 -
i
- 要修改的obj
字段的新值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段是不可访问或final;或者如果此Field
对象没有写访问权限。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现类),或者解包转换失败。 -
NullPointerException
- 如果指定的对象为null且字段为实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
setLong
将字段的值设置为long
在指定的对象上。此方法等效于set(obj, lObj)
,其中lObj
是一个Long
对象,且lObj.longValue() == l
。- 参数:
-
obj
- 应修改其字段的对象 -
l
- 要修改的obj
字段的新值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段是不可访问或final;或者如果此Field
对象没有写访问权限。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现类),或者解包转换失败。 -
NullPointerException
- 如果指定的对象为null且字段为实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
setFloat
将字段的值设置为float
在指定的对象上。此方法等效于set(obj, fObj)
,其中fObj
是一个Float
对象,且fObj.floatValue() == f
。- 参数:
-
obj
- 应修改其字段的对象 -
f
- 要修改的obj
字段的新值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段是不可访问或final;或者如果此Field
对象没有写访问权限。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现类),或者解包转换失败。 -
NullPointerException
- 如果指定的对象为null且字段为实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
setDouble
将字段的值设置为double
在指定的对象上。此方法等效于set(obj, dObj)
,其中dObj
是一个Double
对象,且dObj.doubleValue() == d
。- 参数:
-
obj
- 应修改其字段的对象 -
d
- 要修改的obj
字段的新值 - 抛出:
-
IllegalAccessException
- 如果此Field
对象正在执行Java语言访问控制,并且底层字段是不可访问或final;或者如果此Field
对象没有写访问权限。 -
IllegalArgumentException
- 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现类),或者解包转换失败。 -
NullPointerException
- 如果指定的对象为null且字段为实例字段。 -
ExceptionInInitializerError
- 如果此方法引发的初始化失败。 - 参见:
-
getAnnotation
如果存在指定类型的注释,则返回此元素的注释,否则返回null。请注意,此方法返回的任何注释都是声明注释。
- 指定者:
-
getAnnotation
在接口AnnotatedElement
中 - 覆盖:
-
getAnnotation
在类AccessibleObject
中 - 类型参数:
-
T
- 要查询并返回的注释类型 - 参数:
-
annotationClass
- 对应于注释类型的Class对象 - 返回:
- 如果此元素上存在指定注释类型的注释,则返回该元素的注释,否则返回null
- 抛出:
-
NullPointerException
- 如果给定的注释类为null - 自Java版本:
- 1.5
-
getAnnotationsByType
返回与此元素关联的注解。如果没有与此元素关联的注解,则返回值是长度为0的数组。此方法与AnnotatedElement.getAnnotation(Class)
之间的区别在于,此方法会检测其参数是否为可重复注解类型(JLS 9.6),如果是,则尝试通过“查找”容器注解来找到一个或多个该类型的注解。调用此方法的对象可以修改返回的数组;这不会影响返回给其他调用者的数组。请注意,此方法返回的任何注解都是声明注解。
- 指定者:
-
getAnnotationsByType
在接口AnnotatedElement
- 覆盖:
-
getAnnotationsByType
在类AccessibleObject
- 类型参数:
-
T
- 要查询并返回的注解类型 - 参数:
-
annotationClass
- 对应于注解类型的Class对象 - 返回:
- 如果与此元素关联,则返回指定注解类型的所有此元素的注解,否则返回长度为零的数组
- 抛出:
-
NullPointerException
- 如果给定的注解类为null - 自:
- 1.8
-
getAnnotatedType
返回一个AnnotatedType对象,表示用于指定由此Field表示的字段的声明类型的类型使用。- 返回:
- 表示由此Field表示的字段的声明类型的对象
- 自:
- 1.8
-