java反射字段_【译】4. Java反射——字段

========================================================================================

使用java反射,你可以在运行时检查类的字段(成员变量)并且get/set它们的值。这些是通过Java类java.lang.reflect.Field做的。本文将会给出更详细的关于Field对象的信息。请记住也去查阅Sun的JavaDoc。下面是主题列表:

Obtaining Field Objects(获取Field对象)

Field Name(字段名)

Field Type(字段类型)

Getting and Setting Field Values(get/set字段的值)

========================================================================================

Obtaining Field Objects

从Class对象中获取Field对象。这里有一个例子:

Class aClass = ...//obtain class object

Field[] methods = aClass.getFields();

数组Field[ ]将会存储在类中声明的所有为public的字段的Field对象。

如果你知道你想要访问的字段的字段名,你可以像这样来访问它:

Class aClass = MyObject.classField field= aClass.getField("someField");

上面的例子将会返回Field实例,和下面MyObject声明的字段someField对应:

public classMyObject{public String someField = null;

}

如果不存在和方法getField( )接受的参数一致的字段,会抛出NoSuchFieldException异常。

========================================================================================

Field Name

一旦你获取了一个Field实例,你可以像这样通过Field.getName()方法取得字段名:

Field field = ... //obtain field object

String fieldName = field.getName();

========================================================================================

Field Type

你可以通过Field.getType() 方法取得字段类型(String, int etc.) :

Field field = aClass.getField("someField");

Object fieldType= field.getType();

========================================================================================

Getting and Setting Field Values

一旦你获取了Field对象的引用,你可以像这样通过Field.get()方法和Field.set()方法get/set字段的值:

Class aClass = MyObject.classField field= aClass.getField("someField");

MyObject objectInstance = new MyObject();

Object value = field.get(objectInstance);

field.set(objetInstance, value);

传给get和set方法的参数objectInstance必须是拥有该字段的实例。在上面的例子中,用了一个MyObject的实例,因为someField是类MyObject的成员实例。

如果字段是静态字段(public static …),则传null作为get和set方法的参数,而不是上面传的objectInstance。

========================================================================================

目录

这是一个本教程到目前为止涵盖的主题列表:

(敬请期待下一篇翻译)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值