eg:
package 反射.类加载过程;public class ClassLoaderTest { public static void main(String[] args) { ClassLoader classLoader1 = ClassLoaderTest.class.getClassLoader(); // 这里输出的结果为: jdk.internal.loader.ClassLoaders$AppClassLoader@3fee733d System.out.println(classLoader1); ClassLoader classLoader2 = classLoader1.getParent(); //这里输出的结果为: jdk.internal.loader.ClassLoaders$PlatformClassLoader@7291c18f System.out.println(classLoader2); ClassLoader classLoader3 = classLoader2.getParent(); //这里输出结果为: null (因为根类加载器是获取不到的) System.out.println(classLoader3); ClassLoader classLoader4 = String.class.getClassLoader(); //这里输出的结果为: null(也是因为引导类加载器(根类加载器)是获取不到的) System.out.println(classLoader4); }}
总结 :我们可以发现系统类加载器继承自扩展类加载器,而扩展类加载器又继承与引导类加载器(根类加载器)
引导类加载器外界是获取不到的,而系统类加载器和扩展类加载器是可以获取到的
AppClassLoader是系统类加载器中的一种
PlatformClassLoader是扩展类加载器中的一种