应用反射调用私有属性和方法
使用反射调用私有属性和方法
这个例子是《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(); } } }