反射机制
时间:2023-09-16 01:06:26 下载该word文档
3.12、反射机制(理解,基本上本人不太奢求你们会)反射机制如果只是针对于普通开发者而言,意义不大,一般都是作为一些系统的架构设计去使用的,包括以后学习的开源框架,那么几乎都反射机制。3.12.1、认识反射(可以不会的重点)反射之中包含了一个“反”的概念,所以要想解释反射就必须先从“正”开始解释,一般而言,当用户使用一个类的时候,应该先知道这个类,而后通过这个类产生实例化对象,但是“反”指的是通过对象找到类。>>>>>packagecn.mldn.demo;classPerson{}publicclassTestDemo{publicstaticvoidmain(String[]argsthrowsException{Personper=newPerson(;//正着操作System.out.println(per.getClass(.getName(;//反着来}}以上的代码使用了一个getClass(方法,而后就可以得到对象所在的“包.类”名称,这就属于“反”了,但是在这个“反”的操作之中有一个getClass(就作为发起一切反射操作的开端。Person的父类是Object类,而上面所使用getClass(方法就是Object类之中所定义的方法。·取得Class对象:publicfinalClass>getClass(,反射之中的所有泛型都定义为?,返回值都是Object。而这个getClass(方法返回的对象是Class类的对象,所以这个Class就是所有反射操作的源头。但是在讲解其真正使用之前还有一个需要先解释的问题,既然Class是所有反射操作的源头,那么这个类肯定是最为重要的,而如果要想取得这个类的实例化对象,Java中定义了三种方式:方式一:通过Object类的getClass(方法取得,基本不用:>>>>>packagecn.mldn.demo;classPerson{}publicclassTestDemo{publicstaticvoidmain(String[]argsthrowsException{Personper=newPerson(;//正着操作Class>cls=per.getClass(;//取得Class对象System.out.println(cls.getName(;//反着来}}>>>>>方式二:使用“类.class”取得,在日后学习Hibernate开发的时候使用packagecn.mldn.demo;classPerson{}publicclassTestDemo{publicstaticvoidmain(String[]argsthrowsException{Class>cls=Person.class;//取得Class对象
>>>>>System.out.println(cls.getName(;//反着来}}方式三:使用Class类内部定义的一个static方法,主要使用·取得Class类对象:publicstaticClass<?>forName(StringclassNamethrowsClassNotFoundException;>>>>>package