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是扩展类加载器中的一种


![类加载器 [Java][举例理解] 类加载器 [Java][举例理解]](http://www.mshxw.com/aiimages/31/733069.png)
