Java反射(一):能够分析类能力的程序称为反射,反射机制的功能十分强大,可以用来在运行中分析类的能力,在运行中查看对象,实现通用的数组操作代码,利用Method对象。
下面我们首先介绍Class类,在程序运行期间,Java运行时系统始终为所有对象维护一个运行时的类型标识,这个信息跟踪着每个对象所属的类,虚拟机利用运行时类型信息选择相应的方法执行。可以通过专门的Java类访问这些信息,保存这些信息的类被称为Class,下面讨论三种获取Class对象的方法:
1.通过Object类的getClass方法:
设e是一个Integer对象,那么这样便可获得Class对象:Class cl = e.getClass();
Class对象常用的方法有getName,比如:String name = cl.getName();其中,e.getClass().getName()等于java.lang.Integer,e.getName()等于Integer。
2.通过调用静态方法Class.forName()
String className = "java.util.Date";
Class cl = Class.forName(className);
3.第三种方法很简单,比如T是一个任意的Java类型,那么T.class将代表匹配的类对象:
Class cl = int.class;注意:Class对象实际上表示的是一种类型,这种类型不一定是类,比如int就不是类,但int.class是一个Class类型的对象。虚拟机为每一个类型管理一个Class对象,可以利用newInstance方法快速创建一个类的实例:e.getClass().newInstance();这将创建一个与e具有相同类类型的实例,newInstance方法调用默认构造函数(无参构造函数);String s = "java.util.Date";Object m = Class.forName(s).newInstance();如何利用反射分析类的能力?java.lang.reflect有三个类Field,Method和Constructor分别用来描述类的域,方法和构造器。这三个类都有getName方法,用来返回项目的名称,Field有一个getType方法,用来返回域所属类型的Class对象,同时这三个类还有getModifiers方法,通过返回一个正数来描述修饰符的使用状况,这份方法的返回值可以通过Modifier类中的静态方法来分析。就爱阅读www.92to.com网友整理上传,为您提供最全的知识大全,期待您的分享,转载请注明出处。
来源: