模块  java.base
软件包  java.lang.reflect

Class Field

    • 方法摘要

      所有方法  实例方法 具体的方法 
      变量和类型 方法 描述
      boolean equals​(Object obj)
      将此 字段与指定的对象进行比较。
      Object get​(Object obj)
      返回指定对象上此 字段表示的字段的值。
      AnnotatedType getAnnotatedType()
      返回AnnotatedType对象,该对象表示使用类型来指定此Field表示的字段的声明类型。
      <T extends Annotation>
      T
      getAnnotation​(<T> annotationClass)
      返回该元素的,如果这样的注释 否则返回null指定类型的注释。
      <T extends Annotation>
      T[]
      getAnnotationsByType​(<T> annotationClass)
      返回与此元素 关联的注释。
      boolean getBoolean​(Object obj)
      获取静态或实例 boolean字段的值。
      byte getByte​(Object obj)
      获取静态或实例 byte字段的值。
      char getChar​(Object obj)
      获取类型为 char的静态或实例字段的值,或通过扩展转换获得可转换为类型 char的另一种基本类型的值。
      <?> getDeclaringClass()
      返回 表示声明此表示的字段的类或接口对象 字段对象。
      double getDouble​(Object obj)
      获取类型为 double的静态或实例字段的值,或通过扩展转换获得可转换为类型 double的其他基本类型的值。
      float getFloat​(Object obj)
      获取类型为 float的静态或实例字段的值,或通过扩展转换获得可转换为类型 float的另一种基本类型的值。
      Type getGenericType()
      返回 Type对象,该对象表示此 字段对象表示的字段的声明类型。
      int getInt​(Object obj)
      获取类型为 int的静态或实例字段的值,或通过扩展转换获得可转换为类型 int的另一种基本类型的值。
      long getLong​(Object obj)
      获取类型为 long的静态或实例字段的值,或通过扩展转换获得可转换为类型 long的另一种基本类型的值。
      int getModifiers()
      以整数形式返回此 字段对象表示的字段的Java语言修饰符。
      String getName()
      返回此 字段对象表示的字段的名称。
      short getShort​(Object obj)
      获取类型为 short的静态或实例字段的值,或通过扩展转换获得可转换为类型 short的另一种基本类型的值。
      <?> getType()
      返回 对象,该对象标识此 字段对象表示的字段的声明类型。
      int hashCode()
      返回此 字段的哈希 字段
      boolean isEnumConstant()
      如果此字段表示枚举类型的元素,则返回true ; 否则返回false
      boolean isSynthetic()
      如果此字段是合成字段,则返回true ; 否则返回false
      void set​(Object obj, Object value)
      将指定对象参数上此 字段对象表示的字段设置为指定的新值。
      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()
      返回描述此 字段的字符串,包括其泛型类型。
      String toString()
      返回描述此 字段的字符串。
    • 方法详细信息

      • setAccessible

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

        C类中的调用者可以使用此方法来访问memberdeclaring class D如果满足以下任何条件:

        • CD属于同一模块。
        • 该成员是publicDpublic在一个包中,该模块包含D 输出至少包含C的模块。
        • 所述构件是protected staticDpublic在于包含模块的封装D出口到至少包含模块C ,和C是的一个子类D
        • D是一个包,该模块包含D opens至少包含C的模块。 未命名和开放模块中的所有软件包都对所有模块开放,因此当D位于未命名或打开的模块中时,此方法始终成功。

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

        如果有安全管理器,则首先使用ReflectPermission("suppressAccessChecks")权限调用其checkPermission方法。

        重写:
        setAccessibleAccessibleObject
        参数
        flag - accessible标志的新值
        异常
        InaccessibleObjectException - 如果无法启用访问权限
        SecurityException - 如果安全管理器拒绝请求
        另请参见:
        AccessibleObject.trySetAccessible()MethodHandles.privateLookupIn(java.lang.Class<?>, java.lang.invoke.MethodHandles.Lookup)
      • getDeclaringClass

        public <?> getDeclaringClass()
        返回 表示声明此表示的字段的类或接口对象 字段对象。
        Specified by:
        getDeclaringClass在界面 Member
        结果
        表示底层成员的声明类的对象
      • getName

        public String getName()
        返回此 字段对象表示的字段的名称。
        Specified by:
        getName接口 Member
        结果
        底层成员的简单名称
      • getModifiers

        public int getModifiers()
        以整数形式返回此字段对象表示的字段的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语言规范定义的合成字段时才返回true。
        从以下版本开始:
        1.5
      • getType

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

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

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

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

        结果
        一个 Type对象,表示此 字段对象表示的字段的声明类型
        异常
        GenericSignatureFormatError - 如果通用字段签名不符合 The Java™ Virtual Machine Specification中指定的格式
        TypeNotPresentException - 如果基础字段的泛型类型签名引用了不存在的类型声明
        MalformedParameterizedTypeException - 如果基础字段的通用签名引用无法以任何原因实例化的参数化类型
        从以下版本开始:
        1.5
      • equals

        public boolean equals​(Object obj)
        将此字段与指定的对象进行比较。 如果对象相同,则返回true。 如果两个字段对象由同一个类声明并且具有相同的名称和类型,则它们是相同的。
        重写:
        equals在类 Object
        参数
        obj - 要与之比较的引用对象。
        结果
        true如果此对象与obj参数相同; 否则为false
        另请参见:
        Object.hashCode()HashMap
      • toString

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

        修饰符按照“Java语言规范”中指定的规范顺序放置。 这是publicprotectedprivate以下顺序,然后再其它改性剂: staticfinaltransientvolatile

        重写:
        toString类别 Object
        结果
        描述这个 字段的字符串
        See The Java™ Language Specification:
        8.3.1场修改器
      • toGenericString

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

        修饰符按照“Java语言规范”中指定的规范顺序放置。 这是publicprotectedprivate以下顺序,然后再其它改性剂: staticfinaltransientvolatile

        结果
        描述此 字段的字符串,包括其泛型类型
        从以下版本开始:
        1.5
        See The Java™ Language Specification:
        8.3.1场修改器
      • get

        public Object get​(Object obj)           throws IllegalArgumentException,                  IllegalAccessException
        返回指定对象上此字段表示的字段的值。 如果对象具有基本类型,则该值自动包装在对象中。

        基础字段的值如下获得:

        如果基础字段是静态字段,则忽略obj参数; 它可能是null。

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

        如果此字段对象正在强制执行Java语言访问控制,并且基础字段不可访问,则该方法将抛出IllegalAccessException 如果基础字段是静态的,则声明该字段的类如果尚未初始化则初始化。

        否则,将从基础实例或静态字段中检索该值。 如果字段具有基本类型,则在返回之前将值包装在对象中,否则按原样返回。

        如果该字段隐藏在obj类型中,则根据前面的规则获取字段的值。

        参数
        obj - 从中提取所表示字段值的对象
        结果
        对象obj表示字段的值; 原始值在返回之前包装在适当的对象中
        异常
        IllegalAccessException - 如果此 字段对象强制执行Java语言访问控制且基础字段不可访问。
        IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例。
        NullPointerException - 如果指定的对象为null且该字段是实例字段。
        ExceptionInInitializerError - 如果此方法引发的初始化失败。
      • getChar

        public char getChar​(Object obj)             throws IllegalArgumentException,                    IllegalAccessException
        获取类型为 char的静态或实例字段的值,或通过扩展转换获得可转换为类型 char的另一种基本类型的值。
        参数
        obj - 从中提取 char值的对象
        结果
        转换为类型 char的字段的值
        异常
        IllegalAccessException - 如果此 字段对象强制执行Java语言访问控制且基础字段不可访问。
        IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者通过扩展转换无法将字段值转换为类型 char
        NullPointerException - 如果指定的对象为null且该字段是实例字段。
        ExceptionInInitializerError - 如果此方法引发的初始化失败。
        另请参见:
        get(java.lang.Object)
      • getShort

        public short getShort​(Object obj)               throws IllegalArgumentException,                      IllegalAccessException
        获取类型为 short的静态或实例字段的值,或通过扩展转换获得可转换为类型 short的另一种基本类型的值。
        参数
        obj - 从中提取 short值的对象
        结果
        转换为类型 short的字段的值
        异常
        IllegalAccessException - 如果此 字段对象强制执行Java语言访问控制且基础字段不可访问。
        IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者通过扩展转换无法将字段值转换为类型 short
        NullPointerException - 如果指定的对象为null且该字段是实例字段。
        ExceptionInInitializerError - 如果此方法引发的初始化失败。
        另请参见:
        get(java.lang.Object)
      • getLong

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

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

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

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

        该操作如下:

        如果基础字段是静态的,则忽略obj参数; 它可能是null。

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

        如果此字段对象强制执行Java语言访问控制,并且基础字段不可访问,则该方法将抛出IllegalAccessException

        如果基础字段为final,则该方法抛出IllegalAccessException除非setAccessible(true)已成功执行此字段对象且该字段为非静态字段。 以这种方式设置最终字段仅在反序列化或重建具有空白最终字段的类的实例期间才有意义,然后才能使程序的其他部分访问它们。 在任何其他上下文中使用可能具有不可预测的影响,包括程序的其他部分继续使用该字段的原始值的情况。

        如果基础字段是基本类型,则尝试进行解包转换以将新值转换为基本类型的值。 如果此尝试失败,则该方法抛出IllegalArgumentException

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

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

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

        如果该字段隐藏在obj类型中,则根据前面的规则设置字段的值。

        参数
        obj - 应修改其字段的对象
        value -用于领域的新值 obj被修改
        异常
        IllegalAccessException - 如果此 字段对象正在强制执行Java语言访问控制,并且基础字段不可访问或最终。
        IllegalArgumentException - 如果指定的对象不是声明基础字段(或其子类或实现者)的类或接口的实例,或者解包转换失败。
        NullPointerException - 如果指定的对象为null且该字段是实例字段。
        ExceptionInInitializerError - 如果此方法引发的初始化失败。
      • getAnnotation

        public <T extends Annotation> T getAnnotation​(<T> annotationClass)
        从界面复制的说明: AnnotatedElement
        返回该元素的,如果这样的注释 否则返回null指定类型的注释。
        Specified by:
        getAnnotation接口 AnnotatedElement
        重写:
        getAnnotationAccessibleObject
        参数类型
        T - 要查询的注释的类型,如果存在则返回
        参数
        annotationClass - 与注释类型对应的Class对象
        结果
        如果此元素上存在指定注释类型,则此元素的注释,否则为null
        异常
        NullPointerException - 如果给定的注释类为null
        从以下版本开始:
        1.5
      • getAnnotationsByType

        public <T extends Annotation> T[] getAnnotationsByType​(<T> annotationClass)
        返回与此元素关联的注释。 如果没有与此元素关联的注释,则返回值是长度为0的数组。此方法与AnnotatedElement.getAnnotation(Class)之间的区别在于此方法检测其参数是否为可重复注释类型 (JLS 9.6),如果是,则尝试通过“查看”容器注释来查找该类型的一个或多个注释。 此方法的调用者可以自由修改返回的数组; 它对返回给其他调用者的数组没有影响。
        Specified by:
        getAnnotationsByType ,界面 AnnotatedElement
        重写:
        getAnnotationsByType在类 AccessibleObject
        参数类型
        T - 要查询的注释的类型,如果存在则返回
        参数
        annotationClass - 与注释类型对应的Class对象
        结果
        如果与此元素关联,则指定注释类型的所有此元素的注释,否则为长度为零的数组
        异常
        NullPointerException - 如果给定的注释类为null
        从以下版本开始:
        1.8
      • getAnnotatedType

        public AnnotatedType getAnnotatedType()
        返回AnnotatedType对象,该对象表示使用类型来指定此Field表示的字段的声明类型。
        结果
        表示此Field表示的字段的声明类型的对象
        从以下版本开始:
        1.8