Java Reflection教程(4):Fields成员变量

2014-11-24 08:07:28 · 作者: · 浏览: 0

上一篇:http://www.2cto.com/kf/201205/132640.html


类的成员变量定义可以通过Class 的getFields()来取得

[java]
Class aClass = ...//obtain class object
Field[] methods = aClass.getFields();
Class aClass = ...//obtain class object
Field[] methods = aClass.getFields();

如果知道Field的名称,则可以通过getField() 取得对应的Field定义

[java]
Class aClass = MyObject.class
Field field = aClass.getField("someField");
Class aClass = MyObject.class
Field field = aClass.getField("someField");

对应到类的定义可以如下:

[java]
public class MyObject{
public String someField = null;

}
public class MyObject{
public String someField = null;

}

如果找不到对应的Field定义,Java Reflection API 抛出NoSuchFieldException异常。

1. 获取成员变量名称

[java]
Field field = ... //obtain field object
String fieldName = field.getName();

Field field = ... //obtain field object
String fieldName = field.getName();

2. 获取成员变量类型

[java]
Field field = aClass.getField("someField");
Object fieldType = field.getType();
Field field = aClass.getField("someField");
Object fieldType = field.getType();[java]

3. 为成员变量赋值或取得成员变量的值

[java]
Class aClass = MyObject.class
Field field = aClass.getField("someField");

MyObject objectInstance = new MyObject();

Object value = field.get(objectInstance);

field.set(objetInstance, value);
Class aClass = MyObject.class
Field field = aClass.getField("someField");

MyObject objectInstance = new MyObject();

Object value = field.get(objectInstance);

field.set(objetInstance, value);
如果Field为Static类型,则使用null 作为get,set 的首参数。

摘自 引路蜂移动软件