应用反射调用私有属性和方法

使用反射调用私有属性和方法

这个例子是《Thinking in Java》上的


package J2_v1;

public class Test2 {
	private int hiddenVal = 2;
}


package J2_v1;

import java.lang.reflect.Field;

public class Test1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Test2 tt2 = new Test2();
		Field g = null;
		try {
			g = tt2.getClass().getDeclaredField("hiddenVal");
		} catch (SecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		g.setAccessible(true);
		try {
			System.out.println(g.getInt(tt2));
		} catch (IllegalArgumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}