一.什么是ClassLoader
ClassLoader 就是类加载器,作用是,在类加载过程
其中的 加载阶段 把 java 的.class,加载成这个 .class 对应的Class对象
它位于java.lang这个包
二.类加载的种类(从定向下)
有三种:
①启动类加载器:Bootstrap ClassLoader
用来加载java的核心API,它加载出来的Class对象,我们无法访问到的,底层由C++编写,已嵌入到了JVM内核当中,当JVM启动后,Bootstrap ClassLoader也随着启动,负责加载完核心类库后,并构造Extendsion ClassLoader和App ClassLoader类加载器
②扩展类加载器:Extendsion ClassLoader
加载你的依赖包的.class,就是各种你导进项目的 jar包里头的.class,父类加载器为null
③应用类加载器:Application ClassLoader
简单来说,它用来加载你自己写的 java类的 .class文件,父类加载器为Extendsion ClassLoader
java 类加载机制 采用的是 双亲委派模型,因为这篇主要内容是类加载器,就先不深究类加载机制了
三.来个小Demo吧
不用Junit的话,你就把这个方法的 方法体 放到你类的 main方法里边,跑main方法就可以了
public class ClassLoaderTest {
@Test
public void test() {
ClassLoader loader = ClassLoaderTest.class.getClassLoader();
System.out.println("应用类加载器:"+loader.toString());
System.out.println("拓展类加载器:"+loader.getParent().toString());
System.out.println("启动类加载器:"+loader.getParent().getParent());
}
}