java.lang.ClassLoader :就是找到类的字节码文件并构造出类在JVM内部表示的对象组件。
- 类装载器的种类:根装载器、扩展类装载器(ExtClassLoader)、系统类装载器(AppClassLoader)。
1)根装载器:用来装载JRE(Java的运行环境)的核心库类()。根装载器不是ClassLoader 的子类,它使用c+编写,在Java中看不到它。
2)扩展类装载器(ExtClassLoader):用来装载JRE扩展目录ext中的JAR类包。
3)系统类装载器(AppClassLoader):用来装载ClassPath路径下的类包。
三者继承关系:
系统类装载器(AppClassLoader) ——> 扩展类装载器(ExtClassLoader) ——>根装载器。 - 类装载器步骤:装载、链接、初始化。
1)装载:查找和导入Class文件。
2)链接:校验:检查载入Class文件数据的正确性;
准备:给类的静态变量分配存储空间;
解析:将符号引用转成直接引用。
3)初始化:给类的静态变量进行初始化赋值。 - 类装载器的常用方法。
Class loadClass(String name).name是装载的类名,必须使用权限定类名。
Class defineClass(String name,byte[] b,int off,int len). 将类文件的字节数转化为Java对象。
Class findLoadedClass(String name).查看ClassLoader是否装载了某个类,装载了返回Java.lang.Class对象。否则返回null。
ClassLoader getParent(),获取类装载器的父类装载器。