学习反射章节-获取类加载器及其类加载路径

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

posted @ 2022-05-18 21:41  -和时间赛跑-  阅读(116)  评论(0编辑  收藏  举报