目录
- 反射小知识
- 反射需要学的类:
- 出现这个技术的背景
- 原理:
- tomcat 软件就使用了反射技术
- 字节码文件
- 如何获取字节码文件(如何创建class对象)
- class 类
- class 类常用的方法
反射小知识
所以利用反射创建多个对象,其实这些对象是同一个
反射需要学的类:
代码语言:javascript复制 -- java.lang 包里面的Class 类
--java.lang.reflect包中
o Constructor 类:代表类的构造方法 o Field 类:代表类的成员变量(属性) o Method类:代表类的成员方法
出现这个技术的背景
有一个已经做好的应用程序,如果有人想要增加功能,那么就需要这个应用程序提供一个接口。自己写好一个实现这个接口的类,然后在这个程序里面创建这个类的对象就可以了。 但是现在的问题是,这个应用程序已经做好,即使有实现这个接口的类,但是在这个程序里面不可以创建对象,所以自己创建的类在这个应用程序里面是不能够使用 的。
为了解决这个问题,如何做呢? 在对外提供接口的同时,还对外提供了一个配置文件,应用程序是一直在读这个配置文件, 现在我们需要做的就是,自己写一个实现这个接口的类,并且将这个类的名称告诉这个配置文件就可以了。
原理:
这个应用程序里面就有一个专门提取配置文件的流,读完就会得到这个类名,并且寻找对应的class文件,就是字节码文件,找到了这个应用程序就会加载这个文件,并且获取这个文件里面的所有的内容,获取到之后就可以调用里面的所有东西
所以也就是我们在写应用程序的时候,已经将反射技术写好了,
==============================================
所以,以后开发的时候,直接使用配置文件,学习框架的时候,也是利用了反射的技术,也是需要配置文件。
tomcat 软件就使用了反射技术
字节码文件
对于字节码文件,也会进行向上抽取,会抽取出一个Class类,这个类里面就可以得到所有的字节码文件的内容,对于反射,就是依靠这个Class类完成 的。
如何获取字节码文件(如何创建class对象)
因为只要得到字节码文件,就可以进行反射技术,所以获取字节码文件就显得重要。
也就是所有的类都继承了object,所以所有的类都有这个方法
第三个方式,这个是必须掌握的 在java.lang 包中有一个类Class 里面有一个静态方法forName() ,就可以根据这个方法得到字节码文件
记住“forname里面写的是字符串,所以需要写类的全路径,即使将这个类导进来了,但是还是要写路径,因为这个参数是字符串,和导包没有关系。