学习反射章节-获取类加载器及其类加载路径
public class 类加载器 {
public static void main(String[] args) throws IOException {
//获取系统类加载器
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
System.out.println(systemClassLoader);
//获取拓展类加载器
ClassLoader extensionClassLoader = systemClassLoader.getParent();
System.out.println(extensionClassLoader);
System.out.println(ClassLoader.getPlatformClassLoader());
//获取根类加载器,结果无法获取,为null
//因为根类加载器没有继承ClassLoader抽象类,是C++实现的,所以拓展类加载器的getParent()返回null.
System.out.println(extensionClassLoader.getParent());
//获取系统类加载器的类加载路径
Enumeration<URL> enumeration = systemClassLoader.getResources("");
while (enumeration.hasMoreElements()) {
System.out.println(enumeration.nextElement());
}
//获取拓展类加载器的类加载路径
System.out.println(System.getProperty("java.ext.dirs"));
}
}
运行结果如下:
jdk.internal.loader.ClassLoaders$AppClassLoader@2437c6dc
jdk.internal.loader.ClassLoaders$PlatformClassLoader@7c30a502
jdk.internal.loader.ClassLoaders$PlatformClassLoader@7c30a502
null
file:/E:/study/JavaSE/out/production/JavaSE/
null