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 语言修饰符 另请参见:
Modifier4、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(),
Hashtable9、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
相关文章推荐
- 使用Java读取配置文件
- java中String字符串的替换函数:replace与replaceAll的区别
- spring-boot-starter-amqp踩坑记
- Java千百问_03基础语法(014)_volatile关键字有什么用
- struts2的Action访问Servlet的几种方式和全局result
- Java并发编程-ThreadFactory接口
- JAVAWeb开发学习笔记
- springMVC+Java验证码完善注册功能
- java多线程之对ThreadLocal类的理解
- Spring+Struts2+Mybatis整合
- java 输出九九乘法表
- java 抽象类 接口
- myeclipse10 提示unable to load default svn client
- Struts2+spring+Mybatis框架整合
- Ubuntu 15.04 安装JDK并配置成为默认的JDK
- [导入]Eclipse 导入/编译 Hadoop 源码
- JAVA 多线程静态同步函数的锁是class 对象
- java反射机制详解
- Java字符串处理之详解String自带方法
- 修饰类的使用以及使用技巧