您的位置:首页 > 编程语言 > Java开发

javaAPI之Field

2016-06-05 16:06 435 查看
类结构:
java.lang.Object
java.lang.reflect.AccessibleObject
java.lang.reflect.Field
所有已实现的接口: AnnotatedElement,Member类声明:
public final class Field extends AccessibleObject implements Member
类描述:
Field
提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)字段或实例字段。 重要方法1、 public Class<?>getDeclaringClass()     返回表示类或接口的
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 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
对象是相同的。      覆盖:类
Object
中的
equals
     参数:
obj
- 要与之比较的引用对象。     返回:如果此对象与 obj 参数相同,则返回
true
;否则返回
false
。    另请参见:
Object.hashCode()
,
Hashtable
9、public StringtoString()
返回一个描述此 [code]Field
的字符串。格式是:该字段(如果存在的话)的访问修饰符,后面跟着字段类型和一个空格,再后面是声明该字段的类的完全限定名,后面跟着一个句点,最后是字段的名称。例如:[/code]
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。
     覆盖:类 [code]Object
中的
toString
      返回:该对象的字符串表示形式。
10、public String toGenericString()
返回一个描述此 [code]Field
(包括其一般类型)的字符串。格式是:该字段(如果存在的话)的访问修饰符,后面跟着一般字段类型和一个空格,再后面是声明该字段的类的完全限定名,后面跟着一个句点,最后是字段的名称。 [/code]
 修饰符是按照 "The Java Language Specification" 中指定的规范化顺序放置的。public、protected 或 private 的修饰符放在最前面,然后按以下顺序放置其他修饰符:static、final、transient 和 volatile。 
      返回:描述此 [code]Field
(包括其一般类型)的字符串[/code]
      从以下版本开始: 1.5 
11、public Object get(Object obj) throws IllegalArgumentException,  IllegalAccessException
返回指定对象上此 [code]Field
表示的字段的值。如果该值是一个基本类型值,则自动将其包装在一个对象中。 [/code]
底层字段的值是按以下方式获得的: 
如果底层字段是一个静态字段,则忽略 [code]obj
变量;它可能为 null。 [/code]
否则,底层字段是一个实例字段。如果指定的 [code]obj
变量为 null,则该方法将抛出一个
NullPointerException
。如果指定对象不是声明底层字段的类或接口的实例,则该方法将抛出一个
IllegalArgumentException
。  [/code]
如果此 [code]Field
对象强制实施 Java 语言访问控制,并且底层字段是不可访问的,则该方法将抛出一个
IllegalAccessException
。如果底层字段是静态的,并且声明该字段的类尚未初始化,则初始化这个类。 [/code]
否则,从底层实例字段或静态字段中获取该值。如果该字段是一个基本类型字段,则在返回前将该值包装在一个对象中,否则照原样返回。 
如果字段隐藏在 [code]obj
的类型中,则根据前面的规则获得字段的值。 [/code]
       参数:[code]obj
- 从中提取所表示字段的值的对象 [/code]
       返回:对象 obj 中的所表示字段的值;在返回之前,基值包装在一个适当的对象中 
       抛出: [code]IllegalAccessException
- 如果底层字段是不可访问的。 [/code]
IllegalArgumentException
- 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例。 [/code]
NullPointerException
- 如果指定对象为 null 并且字段是一个实例字段。 [/code]
ExceptionInInitializerError
- 如果此方法引起的初始化失败。[/code]
12、public boolean getBoolean(Object obj)   throws IllegalArgumentException,IllegalAccessException
获取一个静态或实例 [code]boolean
字段的值。 [/code]
        参数:[code]obj
- 从中提取
boolean
值的对象 [/code]
        返回:[code]boolean
字段的值 [/code]
        抛出: [code]IllegalAccessException
- 如果底层字段是不可访问的。 [/code]
IllegalArgumentException
- 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为
boolean
类型。 [/code]
 NullPointerException
- 如果指定对象为 null 并且字段是一个实例字段。 [/code]
 ExceptionInInitializerError
- 如果此方法引起的初始化失败。[/code]
        另请参见:[code]get(java.lang.Object)
13、public byte getByte(Object obj) throws IllegalArgumentException, IllegalAccessException
获取一个静态或实例 [code]byte
字段的值。 [/code]
      参数:[code]obj
- 从中提取
byte
值的对象 [/code]
       返回:[code]byte
字段的值 [/code]
       抛出: [code]IllegalAccessException
- 如果底层字段是不可访问的。 [/code]
IllegalArgumentException
- 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为
byte
类型。 [/code]
 NullPointerException
- 如果指定对象为 null 并且字段是一个实例字段。 [/code]
 ExceptionInInitializerError
- 如果此方法引起的初始化失败。[/code]
      另请参见:[code]get(java.lang.Object)
14、public char getChar(Object obj) throws IllegalArgumentException,IllegalAccessException
获取 [code]char
类型或另一个通过扩展转换可以转换为
char
类型的基本类型的静态或实例字段的值。 [/code]
         参数:[code]obj
- 从中提取
char
值的对象 [/code]
        返回:转换为 [code]char
类型的字段的值 [/code]
        抛出: [code]IllegalAccessException
- 如果底层字段是不可访问的。 [/code]
IllegalArgumentException
- 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为
char
类型。[/code]
 NullPointerException
- 如果指定对象为 null 并且字段是一个实例字段。 [/code]
 ExceptionInInitializerError
- 如果此方法引起的初始化失败。[/code]
        另请参见:[code]get(java.lang.Object)
15、public short getShort(Object obj)  throws IllegalArgumentException,IllegalAccessException
获取 [code]short
类型或另一个通过扩展转换可以转换为
short
类型的基本类型的静态或实例字段的值。 [/code]
       参数:[code]obj
- 从中提取
short
值的对象 [/code]
       返回:转换为 [code]short
类型的字段的值 [/code]
        抛出: [code]IllegalAccessException
- 如果底层字段是不可访问的。 [/code]
IllegalArgumentException
- 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为
short
类型。 [/code]
  NullPointerException
- 如果指定对象为 null 并且字段是一个实例字段。 [/code]
 ExceptionInInitializerError
- 如果此方法引起的初始化失败。[/code]
        另请参见:[code]get(java.lang.Object)
16、public int getInt(Object obj) throws IllegalArgumentException,IllegalAccessException获取 [code]int
类型或另一个通过扩展转换可以转换为
int
类型的基本类型的静态或实例字段的值。 [/code]
        参数:[code]obj
- 从中提取
int
值的对象 [/code]
       返回:转换为 [code]int
类型的字段的值 [/code]
       抛出: [code]IllegalAccessException
- 如果底层字段是不可访问的。 [/code]
IllegalArgumentException
- 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为
int
类型。 [/code]
 NullPointerException
- 如果指定对象为 null 并且字段是一个实例字段。 [/code]
 ExceptionInInitializerError
- 如果此方法引起的初始化失败。[/code]
       另请参见:[code]get(java.lang.Object)
17、public long getLong(Object obj) throws IllegalArgumentException,IllegalAccessException
获取 [code]long
类型或另一个通过扩展转换可以转换为
long
类型的基本类型的静态或实例字段的值。 [/code]
       参数:[code]obj
- 从中提取
long
值的对象 [/code]
       返回:转换为 [code]long
类型的字段的值 [/code]
       抛出: [code]IllegalAccessException
- 如果底层字段是不可访问的。 [/code]
 IllegalArgumentException
- 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为
long
类型。 [/code]
 NullPointerException
- 如果指定对象为 null 并且字段是一个实例字段。 [/code]
 ExceptionInInitializerError
- 如果此方法引起的初始化失败。[/code]
     另请参见:[code]get(java.lang.Object)
18、public float getFloat(Object obj) throws IllegalArgumentException,IllegalAccessException
获取 [code]float
类型或另一个通过扩展转换可以转换为
float
类型的基本类型的静态或实例字段的值。 [/code]
       参数:[code]obj
- 从中提取
float
值的对象 [/code]
      返回:转换为 [code]float
类型的字段的值 [/code]
      抛出: [code]IllegalAccessException
- 如果底层字段是不可访问的。 [/code]
IllegalArgumentException
- 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为
float
类型。 [/code]
NullPointerException
- 如果指定对象为 null 并且字段是一个实例字段。  [/code]
ExceptionInInitializerError
- 如果此方法引起的初始化失败。[/code]
      另请参见:[code]get(java.lang.Object)
19、public double getDouble(Object obj) throws IllegalArgumentException,IllegalAccessException
获取 [code]double
类型或另一个通过扩展转换可以转换为
double
类型的基本类型的静态或实例字段的值。 [/code]
       参数:[code]obj
- 从中提取
double
值的对象 [/code]
      返回:转换为 [code]double
类型的字段的值 [/code]
       抛出: [code]IllegalAccessException
- 如果底层字段是不可访问的。 [/code]
IllegalArgumentException
- 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者无法通过扩展转换将字段值转换为
double
类型。[/code]
 NullPointerException
- 如果指定对象为 null 并且字段是一个实例字段。 [/code]
 ExceptionInInitializerError
- 如果此方法引起的初始化失败。[/code]
     另请参见:[code]get(java.lang.Object)
20、public void set(Object obj,Object value) throws IllegalArgumentException, IllegalAccessException
将指定对象变量上此 [code]Field
对象表示的字段设置为指定的新值。如果底层字段的类型为基本类型,则对新值进行自动解包。 [/code]
进行此操作的方式如下: 
如果底层字段是静态字段,则忽略 [code]obj
变量;它可能为 null。 [/code]
否则底层字段是一个实例字段。如果指定对象变量为 null,则该方法将抛出一个 [code]NullPointerException
。如果指定对象变量不是声明底层字段的类或接口的实例,则该方法将抛出一个
IllegalArgumentException
。 [/code]
如果此 [code]Field
对象实施 Java 语言访问控制,并且底层字段是不可访问的,则该方法将抛出一个
IllegalAccessException
。 [/code]
如果底层字段为 final 字段,则该方法将抛出一个 [code]IllegalAccessException
,除非
setAccessible(true)
已经继承该字段并且该字段是一个非静态字段。在通过程序的其他部分可以访问类的实例之前,只有使用空白 final 字段反序列化或重构类的实例期间,以这种方式设置 final 字段才有意义。在其他任何上下文中使用该方法都可能会有不可预知的结果,包括程序的其他部分继续使用该字段的原始值的情况。 [/code]
如果底层字段的类型为某一基本类型,则可以尝试使用解包转换将新值转换为基本类型的值。如果该尝试失败,则此方法将抛出一个 [code]IllegalArgumentException
。 [/code]
如果在进行可能的解包之后,无法通过某一标识或扩展转换将新值转换为底层字段的类型,则此方法将抛出一个 [code]IllegalArgumentException
。 [/code]
如果底层字段是静态的,并且声明该字段的类尚未初始化,则初始化这个类。 
字段被设置为可能已解包并扩大的新值。 
如果字段隐藏在 [code]obj
的类型中,则根据前面的规则设置字段的值。  [/code]
     参数:[code]obj
- 应该修改其字段的对象[/code]
value
- 正被修改的
obj
的字段的新值 [/code]
     抛出: [code]IllegalAccessException
- 如果底层字段是不可访问的。 [/code]
IllegalArgumentException
- 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者解包转换失败。 [/code]
NullPointerException
- 如果指定对象为 null 并且字段是一个实例字段。 [/code]
ExceptionInInitializerError
- 如果此方法引起的初始化失败。[/code]
21、public void setBoolean(Object obj, boolean z) throws IllegalArgumentException,IllegalAccessException
将字段的值设置为指定对象上的一个 [code]boolean
值。该方法等同于
set(obj, zObj)
,其中
zObj
是一个
Boolean
对象,并且
zObj.booleanValue() == z
。 [/code]
        参数:[code]obj
- 应该修改其字段的对象[/code]
z
- 正被修改的
obj
的字段的新值 [/code]
        抛出: [code]IllegalAccessException
- 如果底层字段是不可访问的。 [/code]
 IllegalArgumentException
- 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者解包转换失败。 [/code]
  NullPointerException
- 如果指定对象为 null 并且字段是一个实例字段。 [/code]
  ExceptionInInitializerError
- 如果此方法引起的初始化失败。[/code]
        另请参见:[code]set(java.lang.Object, java.lang.Object)
22、public void setByte(Object obj,byte b)throws IllegalArgumentException,IllegalAccessException
将字段的值设置为指定对象上的一个 [code]byte
值。该方法等同于
set(obj, bObj)
,其中
bObj
是一个
Byte
对象,并且
bObj.byteValue() == b
。 [/code]
       参数:[code]obj
- 应该修改其字段的对象[/code]
b
- 正被修改的
obj
的字段的新值 [/code]
       抛出: [code]IllegalAccessException
- 如果底层字段是不可访问的。 [/code]
IllegalArgumentException
- 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者解包转换失败。 [/code]
 NullPointerException
- 如果指定对象为 null 并且字段是一个实例字段。 [/code]
 ExceptionInInitializerError
- 如果此方法引起的初始化失败。[/code]
       另请参见:[code]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
将字段的值设置为指定对象上的一个 [code]float
值。该方法等同于
set(obj, fObj)
,其中
fObj
是一个
Float
对象,并且
fObj.floatValue() == f
。 [/code]
      参数:[code]obj
- 应该修改其字段的对象[/code]
f
- 正被修改的
obj
的字段的新值[/code]
      抛出:[code]IllegalAccessException
- 如果底层字段是不可访问的。[/code]
IllegalArgumentException
- 如果指定对象不是声明底层字段(或者其子类或实现者)的类或接口的实例,或者解包转换失败。[/code]
NullPointerException
- 如果指定对象为 null 并且字段是一个实例字段。[/code]
ExceptionInInitializerError
- 如果此方法引起的初始化失败。[/code]
     另请参见:[code]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.530、publicAnnotation[]getDeclaredAnnotations()        从接口
AnnotatedElement
复制的描述        返回直接存在于此元素上的所有注释。与此接口中的其他方法不同,该方法将忽略继承的注释。(如果没有注释直接存在于此元素上,则返回长度为零的一个数组。)           该方法的调用者可以随意修改返回的数组;这不会对其他调用者返回的数组产生任何影响。        指定者:接口
AnnotatedElement
中的
getDeclaredAnnotations
         覆盖:类
AccessibleObject
中的
getDeclaredAnnotations
         返回:直接存在于此元素上的所有注释        从以下版本开始:1.5 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: