模块 java.base

类 Field

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

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

Field 允许在 get 或 set 访问操作期间发生扩大转换,但如果发生缩小转换则抛出 IllegalArgumentException

自从:
1.1
参见:
  • 字段摘要

    在接口 java.lang.reflect.Member 中声明的字段

    DECLARED, PUBLIC
  • 方法总结

    修饰符和类型
    方法
    描述
    返回此字段的不可修改的 访问标志 集,可能为空。
    boolean
    equals(Object obj)
    将此 Field 与指定对象进行比较。
    get(Object obj)
    返回指定对象上此 Field 表示的字段的值。
    返回一个 AnnotatedType 对象,该对象表示使用一种类型来指定此 Field 表示的字段的声明类型。
    <T extends Annotation>
    T
    getAnnotation(Class<T> annotationClass)
    如果此类注解为 present ,则返回此元素针对指定类型的注解,否则为 null。
    <T extends Annotation>
    T[]
    getAnnotationsByType(Class<T> annotationClass)
    返回带有此元素的 associated 注释。
    boolean
    获取静态或实例 boolean 字段的值。
    byte
    获取静态或实例 byte 字段的值。
    char
    获取 char 类型的静态或实例字段的值,或通过扩展转换可转换为 char 类型的另一种原始类型的值。
    Class<?>
    返回表示声明此 Field 对象表示的字段的类或接口的 Class 对象。
    double
    获取类型为 double 的静态或实例字段的值,或可通过扩展转换转换为类型 double 的另一种原始类型的值。
    float
    获取 float 类型的静态或实例字段的值,或通过扩展转换可转换为 float 类型的另一种原始类型的值。
    返回一个 Type 对象,该对象表示此 Field 对象表示的字段的声明类型。
    int
    getInt(Object obj)
    获取类型为 int 的静态或实例字段的值,或可通过扩展转换转换为类型 int 的另一种原始类型的值。
    long
    获取 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 标志设置为指示的boolean。
    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 的字符串。

    在类 java.lang.Object 中声明的方法

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • 方法详情

    • setAccessible

      public void setAccessible(boolean flag)
      从类复制的描述:AccessibleObject
      将此反射对象的 accessible 标志设置为指示的boolean。值 true 表示反射对象在使用时应禁止检查 Java 语言访问控制。值 false 表示反射对象在使用时应强制检查 Java 语言访问控制,并在类描述中注明变化。

      如果以下任何一项成立,则类 C 中的调用者可以使用此方法来启用对 declaring class Dmember 的访问:

      • CD 在同一模块中。
      • 成员是 publicDpublic 在一个包中,模块包含 D exports 到至少包含 C 的模块。
      • 成员是 protected staticD 是包中的 public,包含 D 的模块导出到至少包含 C 的模块,而 CD 的子类。
      • D 在包含 D opens 的模块到至少包含 C 的模块的包中。未命名和开放模块中的所有包都对所有模块开放,因此当 D 在未命名或开放模块中时,此方法总是成功。

      当且仅当:

      • 成员是publicDpublic,模块无条件包含D exports

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

      此方法不能用于启用 write non-modifiable final 字段的访问。以下字段是不可修改的:

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

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

      如果有安全管理器,它的 checkPermission 方法将首先以 ReflectPermission("suppressAccessChecks") 权限调用。

      重写:
      setAccessible 在类 AccessibleObject
      参数:
      flag - accessible 标志的新值
      抛出:
      InaccessibleObjectException - 如果无法启用访问
      SecurityException - 如果请求被安全管理器拒绝
      参见:
    • getDeclaringClass

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

      public String  getName()
      返回此 Field 对象表示的字段的名称。
      指定者:
      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 语言规范定义的合成字段时才为真。
      自从:
      1.5
      参见:
    • getType

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

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

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

      如果基础字段的类型是类型变量或参数化类型,则创建它。否则,它被解决了。

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

      public boolean equals(Object  obj)
      将此 Field 与指定对象进行比较。如果对象相同,则返回 true。如果两个 Field 对象由同一个类声明并且具有相同的名称和类型,则它们是相同的。
      重写:
      equals 在类 Object
      参数:
      obj - 要比较的参考对象。
      返回:
      true 如果此对象与 obj 参数相同; 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参数将被忽略;它可能为空。

      否则,底层字段是一个实例字段。如果指定的 obj 参数为 null,该方法将抛出 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 - 如果此方法引发的初始化失败。
      参见:
    • getByte

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

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

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

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

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

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

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

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

      操作过程如下:

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

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

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

      如果基础字段是最终字段,则当且仅当满足以下条件时,此 Field 对象才具有 write 访问权限:

      如果未满足上述任何检查,此方法将抛出 IllegalAccessException

      以这种方式设置最终字段只有在反序列化或重建具有空白最终字段的类实例期间才有意义,然后才能被程序的其他部分访问。在任何其他上下文中使用可能会产生不可预知的影响,包括程序的其他部分继续使用该字段的原始值的情况。

      如果基础字段是原始类型,则尝试展开转换以将新值转换为原始类型的值。如果此尝试失败,该方法将抛出一个 IllegalArgumentException

      如果在可能的解包之后,新值无法通过标识或扩展转换转换为基础字段的类型,则该方法将抛出 IllegalArgumentException

      如果基础字段是静态的,则声明该字段的类在尚未初始化的情况下被初始化。

      该字段设置为可能未包装和加宽的新值。

      如果该字段在 obj 类型中是隐藏的,则该字段的值按照上述规则设置。

      参数:
      obj - 应修改其字段的对象
      value - 正在修改的 obj 字段的新值
      抛出:
      IllegalAccessException - 如果这个 Field 对象正在执行 Java 语言访问控制并且底层字段是不可访问的或最终的;或者如果这个 Field 对象没有写访问权限。
      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 语言访问控制并且基础字段是不可访问的或最终的;或者如果这个 Field 对象没有写访问权限。
      IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者展开转换失败。
      NullPointerException - 如果指定的对象为空且该字段是实例字段。
      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 语言访问控制并且基础字段是不可访问的或最终的;或者如果这个 Field 对象没有写访问权限。
      IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者展开转换失败。
      NullPointerException - 如果指定的对象为空且该字段是实例字段。
      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 语言访问控制并且基础字段是不可访问的或最终的;或者如果这个 Field 对象没有写访问权限。
      IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者展开转换失败。
      NullPointerException - 如果指定的对象为空且该字段是实例字段。
      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 语言访问控制并且基础字段是不可访问的或最终的;或者如果这个 Field 对象没有写访问权限。
      IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者展开转换失败。
      NullPointerException - 如果指定的对象为空且该字段是实例字段。
      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 语言访问控制并且基础字段是不可访问的或最终的;或者如果这个 Field 对象没有写访问权限。
      IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者展开转换失败。
      NullPointerException - 如果指定的对象为空且该字段是实例字段。
      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 语言访问控制并且基础字段是不可访问的或最终的;或者如果这个 Field 对象没有写访问权限。
      IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者展开转换失败。
      NullPointerException - 如果指定的对象为空且该字段是实例字段。
      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 语言访问控制并且基础字段是不可访问的或最终的;或者如果这个 Field 对象没有写访问权限。
      IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者展开转换失败。
      NullPointerException - 如果指定的对象为空且该字段是实例字段。
      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 语言访问控制并且基础字段是不可访问的或最终的;或者如果这个 Field 对象没有写访问权限。
      IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者展开转换失败。
      NullPointerException - 如果指定的对象为空且该字段是实例字段。
      ExceptionInInitializerError - 如果此方法引发的初始化失败。
      参见:
    • getAnnotation

      public <T extends Annotation > T getAnnotation(Class <T> annotationClass)
      如果此类注解为 present ,则返回此元素针对指定类型的注解,否则为 null。

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

      指定者:
      getAnnotation 在接口 AnnotatedElement
      重写:
      getAnnotation 在类 AccessibleObject
      类型参数:
      T - 要查询并返回的注释类型(如果存在)
      参数:
      annotationClass——注解类型对应的Class对象
      返回:
      如果此元素上存在此元素的指定注解类型的注解,则为 null
      抛出:
      NullPointerException - 如果给定的注释类为 null
      自从:
      1.5
    • getAnnotationsByType

      public <T extends Annotation > T[] getAnnotationsByType(Class <T> annotationClass)
      返回带有此元素的 associated 注释。如果这个元素没有注解associated,返回值是一个长度为0的数组。这个方法和AnnotatedElement.getAnnotation(Class) 的区别是这个方法检测它的参数是否是一个repeatable annotation type(JLS 9.6),如果是,则尝试寻找通过“查看”容器注解来查看该类型的一个或多个注释。该方法的调用者可以自由修改返回的数组;它不会影响返回给其他调用者的数组。

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

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

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