- 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 方法 描述 booleanequals(Object obj)将此Field与指定对象进行比较。Objectget(Object obj)返回由该Field表示的字段在指定对象上的值。AnnotatedTypegetAnnotatedType()返回一个AnnotatedType对象,它表示使用一个类型来指定此Field所表示的字段的声明类型。<T extends Annotation>
TgetAnnotation(Class<T> annotationClass)返回该元素的,如果这样的注释 ,否则返回null指定类型的注释。<T extends Annotation>
T[]getAnnotationsByType(Class<T> annotationClass)返回与此元素 相关联的注释。booleangetBoolean(Object obj)获取静态或实例的值boolean字段。bytegetByte(Object obj)获取静态或实例的值byte字段。chargetChar(Object obj)获取类型为char的静态或实例字段的char或通过加宽转换可转换为类型char的另一个基本类型的值。Annotation[]getDeclaredAnnotations()返回 直接存在于此元素上的注释。Class<?>getDeclaringClass()返回Class表示声明此表示的字段的类或接口对象Field对象。doublegetDouble(Object obj)获取类型为double的静态或实例字段的值,或通过扩大转换获得可转换为类型double的另一个原始类型的值。floatgetFloat(Object obj)获取类型为float的静态或实例字段的值,或通过扩大转换获得可转换为类型float的另一个原始类型的值。TypegetGenericType()返回一个Type对象,表示由该Field对象表示的字段的声明类型。intgetInt(Object obj)获取类型为int的静态或实例字段的值,或通过扩大转换获得可转换为类型int的另一个原始类型的值。longgetLong(Object obj)获取类型为long的静态或实例字段的值,或通过加宽转换获得可转换为类型long的另一个基元类型的值。intgetModifiers()返回由该Field对象表示的字段的Java语言修饰符,作为整数。StringgetName()返回由该Field对象表示的字段的名称。shortgetShort(Object obj)获取类型为short的静态或实例字段的short或通过扩大转换可转换为类型short的另一个基本类型的值。Class<?>getType()返回一个Class对象,标识由该Field对象表示的字段的声明类型。inthashCode()返回此Field的哈希Field。booleanisEnumConstant()如果此字段表示枚举类型的元素,则返回true; 否则返回false。booleanisSynthetic()如果此字段是合成字段,则返回true; 否则返回false。voidset(Object obj, Object value)将指定的对象参数中由此Field对象表示的字段设置为指定的新值。voidsetAccessible(boolean flag)将此反射对象的accessible标志设置为指示的布尔值。voidsetBoolean(Object obj, boolean z)将字段的值设置为指定对象上的boolean。voidsetByte(Object obj, byte b)将字段的值设置为指定对象上的byte。voidsetChar(Object obj, char c)将字段的值设置为指定对象上的char。voidsetDouble(Object obj, double d)将字段的值设置为指定对象上的double。voidsetFloat(Object obj, float f)将字段的值设置为指定对象上的float。voidsetInt(Object obj, int i)将字段的值设置为指定对象上的int。voidsetLong(Object obj, long l)将字段的值设置为指定对象上的long。voidsetShort(Object obj, short s)将字段的值设置为指定对象上的short。StringtoGenericString()返回描述此Field的字符串,包括其通用类型。StringtoString()返回一个描述这个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 classD如果任何下列条件成立:-
C和D在相同的模块中。 - 所述构件是
public和D是public在于包含模块的封装Dexports到至少包含模块C。 - 所述构件是
protectedstatic,D是public在于包含模块的封装D出口到至少包含模块C,和C是的一个子类D。 -
D是在包含该模块的封装Dopens到至少包含模块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
-
-