首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Field 反照

2012-07-04 
Field 反射java.lang.reflect类 Fieldjava.lang.Object?java.lang.reflect.AccessibleObject ?java.lang.r

Field 反射

java.lang.reflect
类 Field
java.lang.Object?Field 反照java.lang.reflect.AccessibleObject ?Field 反照java.lang.reflect.Field
所有已实现的接口:
AnnotatedElement, Member
public final class?Field
extends AccessibleObject
implements Member

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

Array?允许在执行 get 或 set 访问操作期间进行扩展转换,但如果将发生收缩转换,则抛出一个IllegalArgumentException

另请参见:
Member,?Class,?Class.getFields(),?Class.getField(String),?Class.getDeclaredFields(),Class.getDeclaredField(String)

字段摘要?从接口 java.lang.reflect.Member 继承的字段DECLARED, PUBLIC?方法摘要?booleanequals(Object?obj)
??????????将此?Field?与指定对象比较。?Objectget(Object?obj)
??????????返回指定对象上此?Field?表示的字段的值。<T extends Annotation>?
T
getAnnotation(Class<T>?annotationClass)
??????????如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。?booleangetBoolean(Object?obj)
??????????获得一个静态或实例?boolean?字段的值。?bytegetByte(Object?obj)
??????????获得一个静态或实例?byte?字段的值。?chargetChar(Object?obj)
??????????获得?char?类型或另一个通过扩展转换可以转换为?char?类型的基本类型的静态或实例字段的值。?Annotation[]getDeclaredAnnotations()
??????????返回直接存在于此元素上的所有注释。?Class<?>getDeclaringClass()
??????????返回表示类或接口的?Class?对象,该类或接口声明由此?Field?对象表示的字段。?doublegetDouble(Object?obj)
??????????获得?double?类型或另一个通过扩展转换可以转换为?double?类型的基本类型的静态或实例字段的值。?floatgetFloat(Object?obj)
??????????获得?float?类型或另一个通过扩展转换可以转换为?float?类型的基本类型的静态或实例字段的值。?TypegetGenericType()
??????????返回一个?Type?对象,它表示此?Field?对象所表示字段的声明类型。?intgetInt(Object?obj)
??????????获得?int?类型或另一个通过扩展转换可以转换为?int?类型的基本类型的静态或实例字段的值。?longgetLong(Object?obj)
??????????获得?long?类型或另一个通过扩展转换可以转换为?long?类型的基本类型的静态或实例字段的值。?intgetModifiers()
??????????以整数形式返回由此?Field?对象表示的字段的 Java 语言修饰符。?StringgetName()
??????????返回此?Field?对象表示的字段的名称。?shortgetShort(Object?obj)
??????????获得?short?类型或另一个通过扩展转换可以转换为?short?类型的基本类型的静态或实例字段的值。?Class<?>getType()
??????????返回一个?Class?对象,它标识了此?Field?对象所表示字段的声明类型。?inthashCode()
??????????返回该?Field?的哈希码。?booleanisEnumConstant()
??????????如果此字段表示枚举类型的元素,则返回?true;否则返回?false?booleanisSynthetic()
??????????如果此字段是复合字段,则返回?true;否则返回?false?voidset(Object?obj, Object?value)
??????????将指定对象变量上此?Field?对象表示的字段设置为指定的新值。?voidsetBoolean(Object?obj, boolean?z)
??????????将字段的值设置为指定对象上的一个?boolean?值。?voidsetByte(Object?obj, byte?b)
??????????将字段的值设置为指定对象上的一个?byte?值。?voidsetChar(Object?obj, char?c)
??????????将字段的值设置为指定对象上的一个?char?值。?voidsetDouble(Object?obj, double?d)
??????????将字段的值设置为指定对象上的一个?double?值。?voidsetFloat(Object?obj, float?f)
??????????将字段的值设置为指定对象上的一个?float?值。?voidsetInt(Object?obj, int?i)
??????????将字段的值设置为指定对象上的一个?int?值。?voidsetLong(Object?obj, long?l)
??????????将字段的值设置为指定对象上的一个?long?值。?voidsetShort(Object?obj, short?s)
??????????将字段的值设置为指定对象上的一个?short?值。?StringtoGenericString()
??????????返回一个描述此?Field(包括其一般类型)的字符串。?StringtoString()
??????????返回一个描述此?Field?的字符串。?从类 java.lang.reflect.AccessibleObject 继承的方法getAnnotations, isAccessible, isAnnotationPresent, setAccessible, setAccessible

?二.使用:

?? 1.拿到类的属性和设置属性值。

?比如 有一个User类

???? Class clazz=Class.forName("com.testBean.User");////得到类对象
??? Object bean=clazz..newInstance();//实例化该类。
?? a)//解析属性信息
?? Field[] fs=clazz.getDeclaredFields();
???
for(int i = 0 ; i < fs.length; i++){

?????????? Field f = fs[i];

?????????? f.setAccessible(true); //设置些属性是可以访问的

?????????? Object val = f.get(bean);//得到此属性的值? ?

?????????? System.out.println("name:"+f.getName()+", value = "+val);
?????????? f.set(bean,"12") ;??????? //给属性设值

? b)//解析方法信息
?? Method[] methodlist=cla.getDeclaredMethods();

?? c)得到指定的属性,并给该属性设置值。

??????? Field field = clazz.getDeclaredField("userName");

???????? field.setAccessible(true);
?? ??? ? field.set(bean, "张三");

??? 未完待续.

热点排行