JVM在加载类时默认使用“双亲委派机制”。就是某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务时,才自己去加载。
public static void main(String[] args) {
ClassLoader c1=
ClassLoader.getSystemClassLoader();
//1)AppClassLoader (加载我们自己写的类)
System.out.println(c1.getClass());
//2)ExtClassLoader (加载JRE/lib/ext)
ClassLoader c2=c1.getParent();
System.out.println(c2.getClass());
//3)BootstrapClassLoader (加载Jre/lib)
ClassLoader c3=c2.getParent();
System.out.println(c3);
}
运行结果:
class sun.misc.Launcher A p p C l a s s L o a d e r c l a s s s u n . m i s c . L a u n c h e r AppClassLoader class sun.misc.Launcher AppClassLoaderclasssun.misc.LauncherExtClassLoader
null(顶级父类了,所以为null,是用C语言写的,无法获取类名)