java 运行时类型识别(RTTI) - 2 - 反射
java 运行时类型识别(RTTI) - 1 - Class与instanceof
java 运行时类型识别(RTTI) - 2 - 反射
?
本文将叙述如何运行时查看类信息,其中包括变量,方法,以及通过反射修改变量,执行方法等
包括如何反射匿名内部类及如何执行其方法,但是笔者强烈不建议这么做,这里只是演示反射而已
?
下面是一个测试类
?
打印结果
?
?
结果如下
?
输出
结果如下
?
结果如下
?
try {Class<Outer> clazz = Outer.class;Outer o = new Outer("");//System.out.println(o.ti.test());Field field = clazz.getDeclaredField("ti");TestInterface testInterface = (TestInterface) field.get(o);System.out.println(testInterface.test());}catch (SecurityException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (NoSuchFieldException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}?
为了演示反射,这里没有使用System.out.println(o.ti.test());
?
至此,反射演示结束
由于写本篇blog的时候多次修改代码,所以上面可能有些地方不太一致,如果发现,敬请指正
?