Oct 15

JAVA的反射机制 不指定

Heck , 14:20 , 编程杂谈 , 评论(0) , 引用(0) , 阅读(692) , Via 本站原创 | |
反射:
Class c = Class.forName ("java.lang.Integer");

这条语句得到一个 Integer类的类对象。还有另一种方法,如下面的语句:
Class c = Integer.class;

或者
Class c = Integer.TYPE;

它们可获得基本类型的类信息。其中后一种方法中访问的是基本类型的封装类 (如 Integer) 中预先定义好的 TYPE 字段。
第二步是调用诸如 getDeclaredMethods 的方法,以取得该类中定义的所有方法的列表。
一旦取得这个信息,就可以进行第三步了。
第三步是使用 reflection API 来操作这些信息,如下面这段代码:

它将以文本方式打印出 String 中定义的第一个方法的原型。

  反射经常由框架型代码使用,由于这一点,我们可能希望框架能够全面接入代码,无需考虑常规的接入限制。例如当代码在不值得信任的代码共享的环境中运行时。

假设有以下这个类的声明:

可以肯定的是,这个类中的属性name和方法doPrint都是无法对外展示的,但是使用了反射以后就可以办到。
  在该代码中,读者可能看到了一个比较陌生的方法setAccessible,这个方法非常重要,如果它不被设置成true那么所有非公有方法仍然无法调用,所以在调用非公有方法的时候需要注意这点。

来源:Heck's Blog
地址:http://www.hecks.tk/java-code-reflect-html/
转载时须以链接形式注明作者和原始出处及本声明,否则将追究法律责任,谢谢配合!
Tags: , ,