标签:
类结构:
java.lang.Object java.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