类结构:
java.lang.Objectjava.lang.reflect.AccessibleObject
java.lang.reflect.Field
public final class Field extends AccessibleObject implements Member
类描述:
Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)字段或实例字段。 
重要方法
1、 public Class<?>getDeclaringClass()
     返回表示类或接口的 Class 对象,该类或接口声明由此Field
 对象表示的字段。
     指定者:接口Member
 中的getDeclaringClass
返回:表示声明底层成员的类的对象
2、publicStringgetName()
      返回此Field 对象表示的字段的名称。
返回:底层成员的简单名称
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 Class<?>getType() 返回一个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 对象是相同的。
     参数: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 <T extends Annotation> TgetAnnotation(Class<T> annotationClass)
          从接口 AnnotatedElement 复制的描述
如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。
           指定者:接口 AnnotatedElement 中的getAnnotation
           覆盖:类 AccessibleObject 中的getAnnotation
           参数:annotationClass - 对应于注释类型的 Class 对象
返回:如果该元素的指定注释类型的注释存在于此对象上,则返回这些注释,否则返回 null
           抛出:NullPointerException - 如果给定的注释类为 null
从以下版本开始:1.5
30、publicAnnotation[]getDeclaredAnnotations()
        从接口AnnotatedElement 复制的描述
返回直接存在于此元素上的所有注释。与此接口中的其他方法不同,该方法将忽略继承的注释。(如果没有注释直接存在于此元素上,则返回长度为零的一个数组。) 该方法的调用者可以随意修改返回的数组;这不会对其他调用者返回的数组产生任何影响。
        指定者:接口AnnotatedElement
 中的getDeclaredAnnotations
         覆盖:类AccessibleObject
 中的getDeclaredAnnotations
返回:直接存在于此元素上的所有注释
从以下版本开始:1.5
原文:http://blog.csdn.net/u010142437/article/details/51589475