非深入探尋Java反射機制 (Fields)

通過 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



Getting and Setting Fields Values





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章