Module  java.base
软件包  java.lang.reflect

Class Field

    • 方法摘要

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

      • setAccessible

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

        该方法可以通过一个呼叫方在类中使用C以使得能够访问一个memberdeclaring class D如果任何下列条件成立:

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

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

        如果有一个安全管理员,它的checkPermission方法首先被调用一个ReflectPermission("suppressAccessChecks")权限。

        重写:
        setAccessibleAccessibleObject
        参数
        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
        结果
        一个表示底层成员声明类的对象
      • getName

        public String getName​()
        返回由该 Field对象表示的字段的名称。
        Specified by:
        getName在接口 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对象是相同的,如果它们被同一个类声明并具有相同的名称和类型。
        重写:
        equalsObject
        参数
        obj - 用于比较的参考对象。
        结果
        true如果此对象与obj参数相同; 否则为false
        另请参见:
        Object.hashCode()HashMap
      • toString

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

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

        重写:
        toStringObject
        结果
        一个描述这个 Field的字符串
        See The Java™ Language Specification:
        8.3.1字段修饰符
      • toGenericString

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

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

        结果
        一个描述这个 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 - 如果由此方法引发的初始化失败。
      • 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 - 如果此方法引发的初始化失败。
      • getAnnotation

        public <T extends Annotation> T getAnnotation​(Class<T> annotationClass)
        说明从接口AnnotatedElement复制
        返回该元素的,如果这样的注释 否则返回null指定类型的注释。
        Specified by:
        getAnnotation在接口 AnnotatedElement
        重写:
        getAnnotationAccessibleObject
        参数类型
        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
        重写:
        getAnnotationsByTypeAccessibleObject
        参数类型
        T - 要查询的注释类型,如果存在则返回
        参数
        annotationClass - 对应于注释类型的Class对象
        结果
        如果与此元素相关联,则指定注释类型的所有元素注释,否则为长度为零的数组
        异常
        NullPointerException - 如果给定的注释类为空
        从以下版本开始:
        1.8
      • getDeclaredAnnotations

        public Annotation[] getDeclaredAnnotations​()
        返回直接存在于此元素上的注释。 此方法忽略继承的注释。 如果此元素上没有直接显示的注释,则返回值为长度为0的数组。此方法的调用者可以自由修改返回的数组; 它将对返回给其他调用者的数组没有影响。
        Specified by:
        getDeclaredAnnotations在接口 AnnotatedElement
        重写:
        getDeclaredAnnotationsAccessibleObject
        结果
        此元素上直接显示的注释
      • getAnnotatedType

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