• 注册
当前位置:1313e > java >正文

javaAPI之Field

随时随地技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

类结构:

java.lang.Objectjava.lang.reflect.AccessibleObjectjava.lang.reflect.Field

所有已实现的接口:

AnnotatedElement,Member

类声明:

public final class Field extends AccessibleObject implements Member

类描述:

Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)字段或实例字段。 

重要方法

1、 public ClassgetDeclaringClass()

     返回表示类或接口的 Class 对象,该类或接口声明由此Field 对象表示的字段。

     指定者:接口Member 中的getDeclaringClass

 返回:表示声明底层成员的类的对象

 2、publicStringgetName() 

      返回此Field 对象表示的字段的名称。

      指定者:接口Member 中的getName

     返回:底层成员的简单名称  

3、public intgetModifiers()

      以整数形式返回由此Field 对象表示的字段的 Java 语言修饰符。应该使用Modifier 类对这些修饰符进行解码。

      指定者:接口Member 中的getModifiers

      返回:底层成员的 Java 语言修饰符

      另请参见:Modifier

4、public boolean isEnumConstant()

      如果此字段表示枚举类型的元素,则返回true;否则返回false。

     返回:当且仅当此字段表示一个枚举类型的元素时,才返回 true。

     从以下版本开始:1.5 

5、public boolean isSynthetic()

    如果此字段是复合字段,则返回 true;否则返回 false。

    指定者:接口 Member 中的isSynthetic

 返回:当且仅当此字段是一个按 Java Language Specification 定义的复合字段时,才返回 true。

    从以下版本开始:1.5 

6、public ClassgetType() 返回一个Class 对象,它标识了此 Field 对象所表示字段的声明类型。

    返回:标识此对象所表示字段的声明类型的 Class 对象

7、public TypegetGenericType()

      返回一个 Type 对象,它表示此 Field 对象所表示字段的声明类型。

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

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

     返回:返回表示此 Field 对象所表示字段的声明类型的Type 对象

     抛出:GenericSignatureFormatError - 如果一般字段签名不符合 Java Virtual Machine Specification, 3rd edition 中指定的格式

     TypeNotPresentException - 如果底层字段的一般类型签名引用了不存在的类型声明

     MalformedParameterizedTypeException - 如果底层字段的一般签名引用了一个因某种原因而无法实例化的参数化类型

     从以下版本开始:1.5 

8、public boolean equals(Object obj)

      将此 Field 与指定对象比较。如果对象是相同的,则返回 true。如果由相同的类声明并且具有相同的名称和类型,那么这两个Field 对象是相同的。

      覆盖:Object 中的equals

     参数:obj - 要与之比较的引用对象。

     返回:如果此对象与 obj 参数相同,则返回 true;否则返回false

    另请参见:Object.hashCode(),Hashtable

9、public StringtoString()

      返回一个描述此 Field 的字符串。格式是:该字段(如果存在的话)的访问修饰符,后面跟着字段类型和一个空格,再后面是声明该字段的类的完全限定名,后面跟着一个句点,最后是字段的名称。例如:
      public static final int java.lang.Thread.MIN_PRIORITY
      private int java.io.FileDescriptor.fd
      修饰符是按照 "The Java Language Specification" 中指定的规范化顺序放置的。public、protected 或 private 的修饰符放在最前面,然后按以下顺序放置其他修饰符:static、final、transient 和 volatile。
     覆盖:Object 中的 toString
      返回:该对象的字符串表示形式。
 
10、public String toGenericString()
      返回一个描述此 Field(包括其一般类型)的字符串。格式是:该字段(如果存在的话)的访问修饰符,后面跟着一般字段类型和一个空格,再后面是声明该字段的类的完全限定名,后面跟着一个句点,最后是字段的名称。 
       修饰符是按照 "The Java Language Specification" 中指定的规范化顺序放置的。public、protected 或 private 的修饰符放在最前面,然后按以下顺序放置其他修饰符:static、final、transient 和 volatile。 
      返回:描述此 Field(包括其一般类型)的字符串
      从以下版本开始: 1.5 
 
11、public Object get(Object obj) throws IllegalArgumentException,  IllegalAccessException
       返回指定对象上此 Field 表示的字段的值。如果该值是一个基本类型值,则自动将其包装在一个对象中。 
       底层字段的值是按以下方式获得的: 
       如果底层字段是一个静态字段,则忽略 obj 变量;它可能为 null。 
       否则,底层字段是一个实例字段。如果指定的 obj 变量为 null,则该方法将抛出一个 NullPointerException。如果指定对象不是声明底层字段的类或接口的实例,则该方法将抛出一个 IllegalArgumentException。  
       如果此 Field 对象强制实施 Java 语言访问控制,并且底层字段是不可访问的,则该方法将抛出一个 IllegalAccessException。如果底层字段是静态的,并且声明该字段的类尚未初始化,则初始化这个类。 
       否则,从底层实例字段或静态字段中获取该值。如果该字段是一个基本类型字段,则在返回前将该值包装在一个对象中,否则照原样返回。 
       如果字段隐藏在 obj 的类型中,则根据前面的规则获得字段的值。 
       参数:obj - 从中提取所表示字段的值的对象 
       返回:对象 obj 中的所表示字段的值;在返回之前,基值包装在一个适当的对象中 
       抛出: IllegalAccessException - 如果底层字段是不可访问的。 
          IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例。 
         NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。 
         ExceptionInInitializerError - 如果此方法引起的初始化失败。
 
12、public boolean getBoolean(Object obj)   throws IllegalArgumentException,IllegalAccessException
         获取一个静态或实例 boolean 字段的值。 
        参数:obj - 从中提取 boolean 值的对象 
        返回:boolean 字段的值 
        抛出: IllegalAccessException - 如果底层字段是不可访问的。 
          IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为 boolean 类型。 
          NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。 
          ExceptionInInitializerError - 如果此方法引起的初始化失败。
        另请参见:get(java.lang.Object)
 
 
13、public byte getByte(Object obj) throws IllegalArgumentException, IllegalAccessException
       获取一个静态或实例 byte 字段的值。 
      参数:obj - 从中提取 byte 值的对象 
       返回:byte 字段的值 
       抛出: IllegalAccessException - 如果底层字段是不可访问的。 
          IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为 byte 类型。 
          NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。 
          ExceptionInInitializerError - 如果此方法引起的初始化失败。
      另请参见:get(java.lang.Object)
 
14、public char getChar(Object obj) throws IllegalArgumentException,IllegalAccessException 
         获取 char 类型或另一个通过扩展转换可以转换为 char 类型的基本类型的静态或实例字段的值。 
         参数:obj - 从中提取 char 值的对象 
        返回:转换为 char 类型的字段的值 
        抛出: IllegalAccessException - 如果底层字段是不可访问的。 
          IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为 char 类型。
          NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。 
          ExceptionInInitializerError - 如果此方法引起的初始化失败。
        另请参见:get(java.lang.Object)
 
15、public short getShort(Object obj)  throws IllegalArgumentException,IllegalAccessException
        获取 short 类型或另一个通过扩展转换可以转换为 short 类型的基本类型的静态或实例字段的值。 
       参数:obj - 从中提取 short 值的对象 
       返回:转换为 short 类型的字段的值 
        抛出: IllegalAccessException - 如果底层字段是不可访问的。 
          IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为 short 类型。 
           NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。 
          ExceptionInInitializerError - 如果此方法引起的初始化失败。
        另请参见:get(java.lang.Object)
 
16、public int getInt(Object obj) throws IllegalArgumentException,IllegalAccessException获取 int 类型或另一个通过扩展转换可以转换为 int 类型的基本类型的静态或实例字段的值。 
        参数:obj - 从中提取 int 值的对象 
       返回:转换为 int 类型的字段的值 
       抛出: IllegalAccessException - 如果底层字段是不可访问的。 
          IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为 int 类型。 
          NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。 
          ExceptionInInitializerError - 如果此方法引起的初始化失败。
       另请参见:get(java.lang.Object)
 
 
17、public long getLong(Object obj) throws IllegalArgumentException,IllegalAccessException
       获取 long 类型或另一个通过扩展转换可以转换为 long 类型的基本类型的静态或实例字段的值。 
       参数:obj - 从中提取 long 值的对象 
       返回:转换为 long 类型的字段的值 
       抛出: IllegalAccessException - 如果底层字段是不可访问的。 
           IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为 long 类型。 
          NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。 
          ExceptionInInitializerError - 如果此方法引起的初始化失败。
     另请参见:get(java.lang.Object)
 
18、public float getFloat(Object obj) throws IllegalArgumentException,IllegalAccessException
       获取 float 类型或另一个通过扩展转换可以转换为 float 类型的基本类型的静态或实例字段的值。 
       参数:obj - 从中提取 float 值的对象 
      返回:转换为 float 类型的字段的值 
      抛出: IllegalAccessException - 如果底层字段是不可访问的。 
         IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为 float 类型。 
         NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。  
         ExceptionInInitializerError - 如果此方法引起的初始化失败。
      另请参见:get(java.lang.Object)
 
 
 
19、public double getDouble(Object obj) throws IllegalArgumentException,IllegalAccessException 
       获取 double 类型或另一个通过扩展转换可以转换为 double 类型的基本类型的静态或实例字段的值。 
       参数:obj - 从中提取 double 值的对象 
      返回:转换为 double 类型的字段的值 
       抛出: IllegalAccessException - 如果底层字段是不可访问的。 
          IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为 double 类型。
          NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。 
          ExceptionInInitializerError - 如果此方法引起的初始化失败。
     另请参见:get(java.lang.Object)
 

20、public void set(Object obj,Object value) throws IllegalArgumentException, IllegalAccessException

        将指定对象变量上此 Field 对象表示的字段设置为指定的新值。如果底层字段的类型为基本类型,则对新值进行自动解包。 
       进行此操作的方式如下: 
       如果底层字段是静态字段,则忽略 obj 变量;它可能为 null。 
      否则底层字段是一个实例字段。如果指定对象变量为 null,则该方法将抛出一个 NullPointerException。如果指定对象变量不是声明底层字段的类或接口的实例,则该方法将抛出一个 IllegalArgumentException。 
      如果此 Field 对象实施 Java 语言访问控制,并且底层字段是不可访问的,则该方法将抛出一个 IllegalAccessException。 
      如果底层字段为 final 字段,则该方法将抛出一个 IllegalAccessException,除非 setAccessible(true) 已经继承该字段并且该字段是一个非静态字段。在通过程序的其他部分可以访问类的实例之前,只有使用空白 final 字段反序列化或重构类的实例期间,以这种方式设置 final 字段才有意义。在其他任何上下文中使用该方法都可能会有不可预知的结果,包括程序的其他部分继续使用该字段的原始值的情况。 
     如果底层字段的类型为某一基本类型,则可以尝试使用解包转换将新值转换为基本类型的值。如果该尝试失败,则此方法将抛出一个 IllegalArgumentException。 
     如果在进行可能的解包之后,无法通过某一标识或扩展转换将新值转换为底层字段的类型,则此方法将抛出一个 IllegalArgumentException。 
     如果底层字段是静态的,并且声明该字段的类尚未初始化,则初始化这个类。 
      字段被设置为可能已解包并扩大的新值。 
      如果字段隐藏在 obj 的类型中,则根据前面的规则设置字段的值。   
     参数:obj - 应该修改其字段的对象
        value - 正被修改的 obj 的字段的新值 
     抛出: IllegalAccessException - 如果底层字段是不可访问的。 
         IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者解包转换失败。 
         NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。 
         ExceptionInInitializerError - 如果此方法引起的初始化失败。
 
21、public void setBoolean(Object obj, boolean z) throws IllegalArgumentException,IllegalAccessException
         将字段的值设置为指定对象上的一个 boolean 值。该方法等同于 set(obj, zObj),其中 zObj 是一个 Boolean 对象,并且 zObj.booleanValue() == z。 
        参数:obj - 应该修改其字段的对象
           z - 正被修改的 obj 的字段的新值 
        抛出: IllegalAccessException - 如果底层字段是不可访问的。 
           IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者解包转换失败。 
           NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。 
           ExceptionInInitializerError - 如果此方法引起的初始化失败。
        另请参见:set(java.lang.Object, java.lang.Object)
 
22、public void setByte(Object obj,byte b)throws IllegalArgumentException,IllegalAccessException
        将字段的值设置为指定对象上的一个 byte 值。该方法等同于 set(obj, bObj),其中 bObj 是一个 Byte 对象,并且 bObj.byteValue() == b。 
       参数:obj - 应该修改其字段的对象
    b - 正被修改的 obj 的字段的新值 
       抛出: IllegalAccessException - 如果底层字段是不可访问的。 
          IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者解包转换失败。 
          NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。 
          ExceptionInInitializerError - 如果此方法引起的初始化失败。
       另请参见:set(java.lang.Object, java.lang.Object)
 

23、public void setChar(Object obj, char c) throwsIllegalArgumentException,IllegalAccessException

         将字段的值设置为指定对象上的一个 char 值。该方法等同于 set(obj, cObj),其中cObj 是一个 Character 对象,并且 cObj.charValue() == c

         参数:obj - 应该修改其字段的对象

       c - 正被修改的 obj 的字段的新值

          抛出:IllegalAccessException - 如果底层字段是不可访问的。

       IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者解包转换失败。

       NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。

       ExceptionInInitializerError - 如果此方法引起的初始化失败。

          另请参见:set(java.lang.Object, java.lang.Object)

24、public void setShort(Object obj, short s) throwsIllegalArgumentException,IllegalAccessException

         将字段的值设置为指定对象上的一个 short 值。该方法等同于 set(obj, sObj),其中sObj 是一个 Short 对象,并且 sObj.shortValue() == s

         参数:obj - 应该修改其字段的对象

       s - 正被修改的 obj 的字段的新值

         抛出:IllegalAccessException - 如果底层字段是不可访问的。

       IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者解包转换失败。

       NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。

       ExceptionInInitializerError - 如果此方法引起的初始化失败。

           另请参见:set(java.lang.Object, java.lang.Object)

25、public void setInt(Object obj,int i)  throwsIllegalArgumentException,IllegalAccessException

        将字段的值设置为指定对象上的一个 int 值。该方法等同于 set(obj, iObj),其中iObj 是一个 Integer 对象,并且 iObj.intValue() == i

       参数:obj - 应该修改其字段的对象

      i - 正被修改的 obj 的字段的新值

        抛出:IllegalAccessException - 如果底层字段是不可访问的。

       IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者解包转换失败。

       NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。

       ExceptionInInitializerError - 如果此方法引起的初始化失败。

       另请参见:set(java.lang.Object, java.lang.Object)

26、public void setLong(Object obj, long l) throwsIllegalArgumentException,IllegalAccessException

        将字段的值设置为指定对象上的一个 long 值。该方法等同于 set(obj, lObj),其中lObj 是一个 Long 对象,并且 lObj.longValue() == l

      参数:obj - 应该修改其字段的对象

      l - 正被修改的 obj 的字段的新值

      抛出:IllegalAccessException - 如果底层字段是不可访问的。

      IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者解包转换失败。

      NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。

      ExceptionInInitializerError - 如果此方法引起的初始化失败。

       另请参见:set(java.lang.Object, java.lang.Object)

27、public void setFloat(Object obj,float f) throws IllegalArgumentException,IllegalAccessException
       将字段的值设置为指定对象上的一个 float 值。该方法等同于 set(obj, fObj),其中 fObj 是一个 Float 对象,并且 fObj.floatValue() == f
      参数:obj - 应该修改其字段的对象
         f - 正被修改的 obj 的字段的新值
      抛出:IllegalAccessException - 如果底层字段是不可访问的。
         IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者解包转换失败。
         NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。
         ExceptionInInitializerError - 如果此方法引起的初始化失败。
     另请参见:set(java.lang.Object, java.lang.Object)
 

28、public void setDouble(Object obj, double d) throwsIllegalArgumentException,IllegalAccessException

        将字段的值设置为指定对象上的一个 double 值。该方法等同于 set(obj, dObj),其中dObj 是一个 Double 对象,并且 dObj.doubleValue() == d

        参数:obj - 应该修改其字段的对象

       d  - 正被修改的 obj 的字段的新值

        抛出:IllegalAccessException - 如果底层字段是不可访问的。

      IllegalArgumentException - 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者解包转换失败。

       NullPointerException - 如果指定对象为 null 并且字段是一个实例字段。

      ExceptionInInitializerError - 如果此方法引起的初始化失败。

         另请参见:set(java.lang.Object, java.lang.Object)

29、public TgetAnnotation(Class annotationClass)

          从接口 AnnotatedElement 复制的描述

           如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。

           指定者:接口 AnnotatedElement 中的getAnnotation

           覆盖:AccessibleObject 中的getAnnotation

           参数:annotationClass - 对应于注释类型的 Class 对象

          返回:如果该元素的指定注释类型的注释存在于此对象上,则返回这些注释,否则返回 null

           抛出:NullPointerException - 如果给定的注释类为 null

           从以下版本开始:1.5

30、publicAnnotation[]getDeclaredAnnotations()

        从接口AnnotatedElement 复制的描述

        返回直接存在于此元素上的所有注释。与此接口中的其他方法不同,该方法将忽略继承的注释。(如果没有注释直接存在于此元素上,则返回长度为零的一个数组。)           该方法的调用者可以随意修改返回的数组;这不会对其他调用者返回的数组产生任何影响。

        指定者:接口AnnotatedElement 中的getDeclaredAnnotations

         覆盖:AccessibleObject 中的getDeclaredAnnotations

         返回:直接存在于此元素上的所有注释

        从以下版本开始:1.5 

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录
相关推荐