- Obtaining Field Objects
- Field Name
- Field Type
- Getting and Setting Field Values
通过Java反射你能获取到类的成员变量以及可以在运行时get/set他们的值。这是通过类java.lng.reflect.Fidld
来完成的。记得去阅读Sun公司的JavaDoc。
获取成员变量
成员变量是通过Class类获取的:
1 | Class aClass = ...//obtain class object |
fields数组的值与类中每个申明为public的成员变量对应。
如果你知道类中成员变量的命名,你可以这样获取:
1 | Class aClass = MyObject.class |
列子中返回类MyObject中申明为public的成员变量的对象:
1 | public class MyObject{ |
如果getField()
方法没有获取到指定的参数对应的成员变量对象,将会抛出NoSuchFieldException
。
成员变量名称
一旦你成功获取了成员变量的对象,你可以获取到它在类中定义的名称。
1 | Field field = ... //obtain field object |
成员变量类型
通过Field.getType()
方法你可以确定成员变量的类型:
1 | Field field = aClass.getField("someField"); |
获取或者改值
一旦你获取到了成员变量的对象你可以通过Field.get()
和Field.set()
方法来改变它的值:
1 | Class aClass = MyObject.class |
传递给get和set方法的objectInstance参数应该是拥有该字段的类的实例。例子中使用到了类MyObject对象,因为someField
这个成员变量对象对应的成员变量本身就是是MyObject类的成员。
get和set方法传递null
来操作static的成员变量域,而不是类的对象。