通過 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.cpublic 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 ---- floatpublic double[] tao.xiao.action.A.d ---- d ---- class [D
Getting and Setting Fields Values