通過 java.lang.reflect.Field,我們可以在運行時訪問類的成員變量。
Obtaining Field Objects, Field Names and Field Types
package tao.xiao.action;
import java.lang.reflect.Field;
public class A implements IT1 {
private int a;
protected String b;
public float c;
public double[] d;
public static void main(String[] args) throws ClassNotFoundException {
Class myClass = Class.forName("tao.xiao.action.A");
Field[] fields = myClass.getFields();
for (Field field : fields)
System.out.println(field);
}
}
運行結果爲:
public float tao.xiao.action.A.c
public double[] tao.xiao.action.A.d
可見,只能訪問public成員
如果知道成員的名字,則可以直接通過名字來訪問
package tao.xiao.action;
import java.lang.reflect.Field;
public class A implements IT1 {
private int a;
protected String b;
public float c;
public double[] d;
public static void main(String[] args) throws ClassNotFoundException, SecurityException, NoSuchFieldException {
Class myClass = Class.forName("tao.xiao.action.A");
Field field = myClass.getField("c");
System.out.println(field + " ---- " + field.getName() + " ---- " + field.getType());
field = myClass.getField("d");
System.out.println(field + " ---- " + field.getName() + " ---- " + field.getType());
}
}
運行結果爲
public float tao.xiao.action.A.c ---- c ---- float
public double[] tao.xiao.action.A.d ---- d ---- class [D