反射

来源:互联网 发布:java集合框架及其特点 编辑:程序博客网 时间:2024/05/23 16:49

反射

反射库(reflection library)提供了一个非常丰富且精心设计的工具集,以便编写能够动态操纵java代码的程序。

能够分析类能力的程序称为反射(reflective)。反射可以用来:    · 在运行中分析类的能力    · 在运行中查看对象    · 实现通用的数组操作代码    · 利用Method对象,很想C++中的函数指针。

Class类

在程序运行期间,java运行时系统始终会为所有的对象维护一个被成为运行时的执行标识。这个信息跟踪着每一个对象所属的类。虚拟机利用运行时类型信息选择相应的方法执行。通过专门的java类可以访问这些信息(这些信息被成为Class)。Object类中的getClass()方法可以返回一个Class类型的实例。
Employ e;......Class cl = e.getClass();
常用的Class方法是getName。这个方法返回类的名字。
System.out.println(e.getClass().getName() + " " + e.getName());
还可以调用静态方法forName来获得类名对应的Class。
String className = "java.util.Date";Class cl = Class.forName(className);
最后,如果T是任意的java类型,那么T.class将表示匹配的类对象。对了,记得加try....catch捕获异常

利用反射分析类的能力(检查类的结构)

在java.lang.reflect包中有三个类Field、Method和Constructor分别用于描述类的域,方法和构造器。这三个类都有一个getName方法,可以返回项目名称.Field类有一个getType方法,返回描述类所属类型的Class对象.三个类都有一个getModifiiers方法,返回一个整型数值,用不同位开关描述public,static等修饰符的使用状况.还可以用java.lang.reflect包中的Modifier类中的isPublic,isPrivate,isFinal判断方法或构造器的修饰符.Class类中的getField、getMethod和getConstructor分别返回类提供的public域,方法和构造器组.
0 0
原创粉丝点击