Java 反射(練習)

問題:如何修改一個私有的成員變量?

public class PrivateTest {
	private String name = "hello";

	public String getName() {
		return this.name;
	}
}

>關鍵點:設置Field 的可訪問

public class ReflectionTest {

	public static void main(String[] args) throws Exception {
		PrivateTest pt = new PrivateTest();

		Class<?> clazz = pt.getClass();

		// clazz.getField() 獲得一個public成員
		// Field field = clazz.getField("name");

		Field field = clazz.getDeclaredField("name");
		// 設置爲可訪問來壓制訪問控制修飾符,否則報錯:
		// Class com.dareway.re.ReflectionTest can not access a member of class
		// com.dareway.re.PrivateTest with modifiers "private"
		field.setAccessible(true);
		System.out.println(field.get(pt));

		// 修改成員
		field.set(pt, "world");
		System.out.println(field.get(pt));
	}

}

 

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