Module java.base

Class Field

所有已实现的接口:
AnnotatedElement, Member

public final class Field extends AccessibleObject implements Member
一个Field提供了关于类或接口的单个字段的信息和动态访问。反射字段可以是类(静态)字段或实例字段。

Field允许在获取或设置访问操作期间进行扩展转换,但如果发生缩小转换,则会抛出IllegalArgumentException

自:
1.1
参见:
  • Field Summary

    Fields declared in interface java.lang.reflect.Member

    DECLARED, PUBLIC
  • Method Summary

    Modifier and Type
    Method
    Description
    返回此字段的Field的不可修改的访问标志集,可能为空。
    boolean
    equals(Object obj)
    将此Field与指定对象进行比较。
    get(Object obj)
    返回由此Field表示的字段的值,位于指定对象上。
    返回一个AnnotatedType对象,该对象表示用于指定由此Field表示的字段的声明类型的类型的使用。
    <T extends Annotation>
    T
    getAnnotation(Class<T> annotationClass)
    如果此注释存在,则返回指定类型的此元素的注释,否则返回null。
    <T extends Annotation>
    T[]
    getAnnotationsByType(Class<T> annotationClass)
    返回与此元素关联的注释。
    boolean
    获取静态或实例boolean字段的值。
    byte
    getByte(Object obj)
    获取静态或实例byte字段的值。
    char
    getChar(Object obj)
    获取类型为char或通过扩展转换可转换为char类型的另一种原始类型的静态或实例字段的值。
    Class<?>
    返回表示声明由此Field对象表示的字段的类或接口的Class对象。
    double
    获取类型为double或通过扩展转换可转换为double类型的另一种原始类型的静态或实例字段的值。
    float
    获取类型为float或通过扩展转换可转换为float类型的另一种原始类型的静态或实例字段的值。
    返回一个Type对象,该对象表示由此Field对象表示的字段的声明类型。
    int
    getInt(Object obj)
    获取类型为int或通过扩展转换可转换为int类型的另一种原始类型的静态或实例字段的值。
    long
    getLong(Object obj)
    获取类型为long或通过扩展转换可转换为long类型的另一种原始类型的静态或实例字段的值。
    int
    返回由此Field对象表示的字段的Java语言修饰符,作为整数。
    返回由此Field对象表示的字段的名称。
    short
    获取类型为short或通过扩展转换可转换为short类型的另一种原始类型的静态或实例字段的值。
    Class<?>
    返回一个Class对象,该对象标识由此Field对象表示的字段的声明类型。
    int
    返回此Field的哈希码。
    boolean
    如果此字段表示枚举类的元素,则返回true;否则返回false
    boolean
    如果此字段是合成字段,则返回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在指定对象上设置为值。
    返回描述此Field的字符串,包括其通用类型。
    返回描述此Field的字符串。

    Methods declared in class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Method Details

    • setAccessible

      public void setAccessible(boolean flag)
      从类中复制的描述: AccessibleObject
      将此反射对象的accessible标志设置为指定的布尔值。值为true表示反射对象在使用时应该抑制Java语言访问控制检查。值为false表示反射对象在使用时应该执行Java语言访问控制检查,注意类描述中指出的变化。

      调用者在类C中可以使用此方法来启用对声明类 D成员的访问,如果满足以下任何条件:

      • CD在同一模块中。
      • 成员是public的,D在将D包含的模块至少导出到包含C的模块。
      • 成员是protected static的,D在将D包含的模块至少导出到包含C的模块,并且CD的子类。
      • D在将D包含的模块至少打开到包含C的模块。未命名模块和打开模块中的所有包都对所有模块开放,因此当D在未命名或打开模块中时,此方法始终成功。

      JNI代码可以使用此方法,堆栈上没有调用者类,以启用对声明类 D成员的访问,仅当:

      • 成员是public的,D在将D包含的模块无条件导出

      此方法不能用于启用对私有成员、具有默认(包)访问权限的成员、受保护的实例成员或受保护的构造函数的访问权限,当声明类与调用者的模块不同且包含声明类的包对调用者的模块不开放时。

      此方法不能用于启用对不可修改的最终字段的访问。以下字段是不可修改的:

      • 在任何类或接口中声明的静态最终字段
      • 隐藏类中声明的最终字段
      • 记录中声明的最终字段

      accessible标志为true时,仅抑制Java语言访问控制检查以仅启用对这些不可修改的最终字段的访问。

      如果存在安全管理器,则首先调用其checkPermission方法,其中包含ReflectPermission("suppressAccessChecks")权限。

      覆盖:
      setAccessible 在类 AccessibleObject
      参数:
      flag - accessible标志的新值
      抛出:
      InaccessibleObjectException - 如果无法启用访问权限
      SecurityException - 如果安全管理器拒绝请求
      外部规范
      参见:
    • getDeclaringClass

      public Class<?> getDeclaringClass()
      返回表示由此Field对象表示的字段的类或接口的Class对象。
      指定者:
      getDeclaringClass 在接口 Member
      返回:
      表示底层成员的声明类的对象
    • getName

      public String getName()
      Returns the name of the field represented by this Field object.
      指定者:
      getName 在接口 Member
      返回:
      底层成员的简单名称
    • getModifiers

      public int getModifiers()
      返回表示此 Field 对象的字段的Java语言修饰符,以整数形式。应使用 Modifier 类来解码修饰符。
      指定者:
      getModifiers 在接口 Member
      返回:
      底层成员的Java语言修饰符
      参见 Java语言规范:
      8.3 字段声明
      9.3 字段(常量)声明
      另请参见:
    • accessFlags

      public Set<AccessFlag> 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

      public Class<?> getType()
      返回一个标识由此 Field 对象表示的字段的声明类型的 Class 对象。
      返回:
      一个标识由此对象表示的字段的声明类型的 Class 对象
    • getGenericType

      public Type getGenericType()
      返回一个代表由此 Field 对象表示的字段的声明类型的 Type 对象。

      如果字段的声明类型是参数化类型,则返回的 Type 对象必须准确反映源代码中使用的实际类型参数。

      如果底层字段的类型是类型变量或参数化类型,则会创建它。否则,它会被解析。

      返回:
      代表由此 Field 对象表示的字段的声明类型的 Type 对象
      抛出:
      GenericSignatureFormatError - 如果通用字段签名不符合 Java虚拟机规范 中指定的格式
      TypeNotPresentException - 如果底层字段的通用类型签名引用不存在的类或接口声明
      MalformedParameterizedTypeException - 如果底层字段的通用签名引用参数化类型,但由于任何原因无法实例化
      自:
      1.5
    • equals

      public boolean equals(Object obj)
      将此 Field 与指定对象进行比较。如果对象相同,则返回true。如果两个 Field 对象由同一类声明并且具有相同的名称和类型,则它们相同。
      覆盖:
      equals 在类 Object
      参数:
      obj - 用于比较的引用对象。
      返回:
      如果此对象与 obj 参数相同,则返回 true;否则返回 false
      另请参见:
    • hashCode

      public int hashCode()
      返回此 Field 的哈希码。计算方法是底层字段的声明类名称和字段名称的哈希码的异或。
      覆盖:
      hashCode 在类 Object
      返回:
      此对象的哈希码值。
      另请参见:
    • toString

      public String toString()
      返回描述此 Field 的字符串。格式为字段的访问修饰符(如果有),后跟字段类型,后跟一个空格,后跟声明字段的类的完全限定名称,后跟一个句点,后跟字段的名称。例如:
          public static final int java.lang.Thread.MIN_PRIORITY
          private int java.io.FileDescriptor.fd
       

      修饰符按照《Java语言规范》规定的规范顺序放置。首先是 publicprotectedprivate,然后是以下顺序的其他修饰符: staticfinaltransientvolatile

      覆盖:
      toString 在类 Object
      返回:
      描述此 Field 的字符串
      参见 Java语言规范:
      8.3.1 字段修饰符
    • toGenericString

      public String toGenericString()
      返回描述此 Field 的字符串,包括其通用类型。格式为字段的访问修饰符(如果有),后跟通用字段类型,后跟一个空格,后跟声明字段的类的完全限定名称,后跟一个句点,后跟字段的名称。

      修饰符按照《Java语言规范》规定的规范顺序放置。首先是 publicprotectedprivate,然后是以下顺序的其他修饰符: staticfinaltransientvolatile

      返回:
      描述此 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

      public boolean getBoolean(Object obj) throws IllegalArgumentException, IllegalAccessException
      获取静态或实例boolean字段的值。
      参数:
      obj - 从中提取boolean值的对象
      返回:
      boolean字段的值
      抛出:
      IllegalAccessException - 如果此Field对象正在执行Java语言访问控制,并且底层字段不可访问。
      IllegalArgumentException - 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换转换为类型boolean
      NullPointerException - 如果指定的对象为null且字段是实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • getByte

      public byte getByte(Object obj) throws IllegalArgumentException, IllegalAccessException
      获取静态或实例byte字段的值。
      参数:
      obj - 从中提取byte值的对象
      返回:
      byte字段的值
      抛出:
      IllegalAccessException - 如果此Field对象正在执行Java语言访问控制,并且底层字段不可访问。
      IllegalArgumentException - 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换转换为类型byte
      NullPointerException - 如果指定的对象为null且字段是实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • getChar

      public char getChar(Object obj) throws IllegalArgumentException, IllegalAccessException
      获取静态或实例char类型字段的值,或通过扩展转换转换为类型char的另一种原始类型的字段值。
      参数:
      obj - 从中提取char值的对象
      返回:
      转换为类型char的字段值
      抛出:
      IllegalAccessException - 如果此Field对象正在执行Java语言访问控制,并且底层字段不可访问。
      IllegalArgumentException - 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换转换为类型char
      NullPointerException - 如果指定的对象为null且字段是实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • getShort

      public short getShort(Object obj) throws IllegalArgumentException, IllegalAccessException
      获取静态或实例short类型字段的值,或通过扩展转换转换为类型short的另一种原始类型的字段值。
      参数:
      obj - 从中提取short值的对象
      返回:
      转换为类型short的字段值
      抛出:
      IllegalAccessException - 如果此Field对象正在执行Java语言访问控制,并且底层字段不可访问。
      IllegalArgumentException - 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换转换为类型short
      NullPointerException - 如果指定的对象为null且字段是实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • getInt

      public int getInt(Object obj) throws IllegalArgumentException, IllegalAccessException
      获取静态或实例int类型字段的值,或通过扩展转换转换为类型int的另一种原始类型的字段值。
      参数:
      obj - 从中提取int值的对象
      返回:
      转换为类型int的字段值
      抛出:
      IllegalAccessException - 如果此Field对象正在执行Java语言访问控制,并且底层字段不可访问。
      IllegalArgumentException - 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换转换为类型int
      NullPointerException - 如果指定的对象为null且字段是实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • getLong

      public long getLong(Object obj) throws IllegalArgumentException, IllegalAccessException
      获取静态或实例long类型字段的值,或通过扩展转换转换为类型long的另一种原始类型的字段值。
      参数:
      obj - 从中提取long值的对象
      返回:
      转换为类型long的字段值
      抛出:
      IllegalAccessException - 如果此Field对象正在执行Java语言访问控制,并且底层字段不可访问。
      IllegalArgumentException - 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换转换为类型long
      NullPointerException - 如果指定的对象为null且字段是实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • getFloat

      public float getFloat(Object obj) throws IllegalArgumentException, IllegalAccessException
      获取静态或实例float类型字段的值,或通过扩展转换转换为类型float的另一种原始类型的字段值。
      参数:
      obj - 从中提取float值的对象
      返回:
      转换为float类型的字段值
      抛出:
      IllegalAccessException - 如果此Field对象正在执行Java语言访问控制,并且底层字段不可访问。
      IllegalArgumentException - 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换为float类型。
      NullPointerException - 如果指定的对象为null且字段为实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • getDouble

      public double getDouble(Object obj) throws IllegalArgumentException, IllegalAccessException
      获取类型为double或通过扩展转换为double的其他原始类型的静态或实例字段的值。
      参数:
      obj - 从中提取double值的对象
      返回:
      转换为double类型的字段值
      抛出:
      IllegalAccessException - 如果此Field对象正在执行Java语言访问控制,并且底层字段不可访问。
      IllegalArgumentException - 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者字段值无法通过扩展转换为double类型。
      NullPointerException - 如果指定的对象为null且字段为实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • set

      public void set(Object obj, Object value) throws IllegalArgumentException, IllegalAccessException
      将此Field对象表示的字段设置为指定对象参数上的指定新值。如果底层字段具有原始类型,则新值将自动解包。

      操作如下进行:

      如果底层字段是静态的,则忽略obj参数;它可以为null。

      否则,底层字段是实例字段。如果指定的对象参数为null,则该方法会抛出NullPointerException。如果指定的对象参数不是声明底层字段的类或接口的实例,则该方法会抛出IllegalArgumentException

      如果此Field对象正在执行Java语言访问控制,并且底层字段不可访问,则该方法会抛出IllegalAccessException

      如果底层字段是final的,则仅当满足以下条件时,此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

      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语言访问控制,并且底层字段不可访问或为final;或者如果此Field对象没有写访问权限。
      IllegalArgumentException - 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者),或者解包转换失败。
      NullPointerException - 如果指定的对象为null且字段为实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • 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语言访问控制,并且底层字段是不可访问或final;或者如果此Field对象没有写访问权限。
      IllegalArgumentException - 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现类),或者解包转换失败。
      NullPointerException - 如果指定的对象为null且字段为实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • 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语言访问控制,并且底层字段是不可访问或final;或者如果此Field对象没有写访问权限。
      IllegalArgumentException - 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现类),或者解包转换失败。
      NullPointerException - 如果指定的对象为null且字段为实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • 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语言访问控制,并且底层字段是不可访问或final;或者如果此Field对象没有写访问权限。
      IllegalArgumentException - 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现类),或者解包转换失败。
      NullPointerException - 如果指定的对象为null且字段为实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • 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语言访问控制,并且底层字段是不可访问或final;或者如果此Field对象没有写访问权限。
      IllegalArgumentException - 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现类),或者解包转换失败。
      NullPointerException - 如果指定的对象为null且字段为实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • 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语言访问控制,并且底层字段是不可访问或final;或者如果此Field对象没有写访问权限。
      IllegalArgumentException - 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现类),或者解包转换失败。
      NullPointerException - 如果指定的对象为null且字段为实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • 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语言访问控制,并且底层字段是不可访问或final;或者如果此Field对象没有写访问权限。
      IllegalArgumentException - 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现类),或者解包转换失败。
      NullPointerException - 如果指定的对象为null且字段为实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • getAnnotation

      public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
      如果存在指定类型的注释,则返回此元素的注释,否则返回null。

      请注意,此方法返回的任何注释都是声明注释。

      指定者:
      getAnnotation 在接口 AnnotatedElement
      覆盖:
      getAnnotation 在类 AccessibleObject
      类型参数:
      T - 要查询并返回的注释类型
      参数:
      annotationClass - 对应于注释类型的Class对象
      返回:
      如果此元素上存在指定注释类型的注释,则返回该元素的注释,否则返回null
      抛出:
      NullPointerException - 如果给定的注释类为null
      自Java版本:
      1.5
    • getAnnotationsByType

      public <T extends Annotation> T[] getAnnotationsByType(Class<T> annotationClass)
      返回与此元素关联的注解。如果没有与此元素关联的注解,则返回值是长度为0的数组。此方法与AnnotatedElement.getAnnotation(Class)之间的区别在于,此方法会检测其参数是否为可重复注解类型(JLS 9.6),如果是,则尝试通过“查找”容器注解来找到一个或多个该类型的注解。调用此方法的对象可以修改返回的数组;这不会影响返回给其他调用者的数组。

      请注意,此方法返回的任何注解都是声明注解。

      指定者:
      getAnnotationsByType 在接口 AnnotatedElement
      覆盖:
      getAnnotationsByType 在类 AccessibleObject
      类型参数:
      T - 要查询并返回的注解类型
      参数:
      annotationClass - 对应于注解类型的Class对象
      返回:
      如果与此元素关联,则返回指定注解类型的所有此元素的注解,否则返回长度为零的数组
      抛出:
      NullPointerException - 如果给定的注解类为null
      自:
      1.8
    • getAnnotatedType

      public AnnotatedType getAnnotatedType()
      返回一个AnnotatedType对象,表示用于指定由此Field表示的字段的声明类型的类型使用。
      返回:
      表示由此Field表示的字段的声明类型的对象
      自:
      1.8