class="hide-preCode-box">

本例中,定义了一个MyClassLoader,它从指定的路径加载类文件。当你调用loadClass()时,它会尝试使用findClass()方法加载类。如果找不到,系统类加载器会被调用。

例如,在使用自定义类加载器加载完类后,如果不再需要这些类,类加载器本身也会被垃圾回收,类将被卸载。类卸载通常发生在类加载器不再有任何引用,并且类加载器本身被回收时。
在这里插入图片描述

类加载器与类冲突

有时会遇到不同的类加载器加载同一个类的情况。如下:

public class TestClass {
    public void printMessage() {
        System.out.println("Hello from TestClass!");
    }

    public static void main(String[] args) throws Exception {
        MyClassLoader myClassLoader1 = new MyClassLoader("path/to/classes/");
        MyClassLoader myClassLoader2 = new MyClassLoader("path/to/classes/");

        Class<?> clazz1 = myClassLoader1.loadClass("TestClass");
        Class<?> clazz2 = myClassLoader2.loadClass("TestClass");

        System.out.println("clazz1 == clazz2: " + (clazz1 == clazz2));
    }
}
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

在这个例子中,我们创建了两个不同的MyClassLoader,并用它们分别加载TestClass类。由于每个MyClassLoader加载的是不同的TestClass实例,clazz1 == clazz2将会输出false,表明它们是不同的类。
在这里插入图片描述

总结

data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://crj-cheng.blog.csdn.net/article/details/145434151","extend1":"pc","ab":"new"}">> id="blogExtensionBox" style="width:400px;margin:auto;margin-top:12px" class="blog-extension-box"> class="blog_extension blog_extension_type2" id="blog_extension"> class="extension_official" data-report-click="{"spm":"1001.2101.3001.6471"}" data-report-view="{"spm":"1001.2101.3001.6471"}"> class="blog_extension_card_left"> class="blog_extension_card_cont"> 交流学习/粉丝福利 class="blog_extension_card_cont_r"> 微信名片
注:本文转载自blog.csdn.net的PlutoZuo的文章"https://blog.csdn.net/PlutoZuo/article/details/132837795"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接

评论记录:

未查询到任何数据!