JaveEE-27类加载器和反射
类加载器的作用:
1.Bootstrap ClassLoader 根类加载器
也被称为引导类加载器,负责Java核心类的加载,主要加载的是JVM自身需要的类,这个类加载使用C++语言实现,是虚拟机自身的一部分。
比如System.String等。在JDK中JRE的lib目录下rt.jar文件中。
2.Extension ClassLoader 扩展类加载器
负责JRE的扩展目录中jar包的加载,这个类加载使用Java语言实现。
在JDK中JRE的lib目录下ext目录中。
3.System ClassLoader 系统类加载器
负责在JVM启动时加载来自java命令的class文件,以及classpath环境变量所指定的jar包和类路径,
在Java的日常应用开发中,类的加载几乎是由上述3种类加载器相互配合执行的,在必要时,我们还可以自定义类加载器。
需要注意的是,Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。
而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式即把请求交由父类处理。
反射:
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
要想解剖一个类,必须先要获取到该类的字节码文件对象,而解剖使用的就是Class类中的方法。
所以先要获取到每一个字节码文件对应的Class类型的对象。
昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否知否,应是绿肥红瘦!