原文地址:http://tutorials.jenkov.com/java-reflection/fields.html
========================================================================================
使用java反射,你可以在运行时检查类的字段(成员变量)并且get/set它们的值。这些是通过Java类java.lang.reflect.Field做的。本文将会给出更详细的关于Field对象的信息。请记住也去查阅Sun的JavaDoc。下面是主题列表:
========================================================================================
从Class对象中获取Field对象。这里有一个例子:
Class aClass = ...//obtain class object Field[] methods = aClass.getFields();
数组Field[ ]将会存储在类中声明的所有为public的字段的Field对象。
如果你知道你想要访问的字段的字段名,你可以像这样来访问它:
Class aClass = MyObject.class Field field = aClass.getField("someField");
上面的例子将会返回Field实例,和下面MyObject声明的字段someField对应:
public class MyObject{ public String someField = null; }
如果不存在和方法getField( )接受的参数一致的字段,会抛出NoSuchFieldException异常。
========================================================================================
一旦你获取了一个Field实例,你可以像这样通过Field.getName()方法取得字段名:
Field field = ... //obtain field object String fieldName = field.getName();
========================================================================================
你可以通过Field.getType() 方法取得字段类型(String, int etc.) :
Field field = aClass.getField("someField");
Object fieldType = field.getType();
========================================================================================
一旦你获取了Field对象的引用,你可以像这样通过Field.get()方法和Field.set()方法get/set字段的值:
Class aClass = MyObject.class Field 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。
========================================================================================
这是一个本教程到目前为止涵盖的主题列表:
(敬请期待下一篇翻译)