Skip to content

修正类加载器详解中一个错误#2690

Merged
Snailclimb merged 1 commit intoSnailclimb:mainfrom
JIANGZEHUI0319:patch-1
Jul 2, 2025
Merged

修正类加载器详解中一个错误#2690
Snailclimb merged 1 commit intoSnailclimb:mainfrom
JIANGZEHUI0319:patch-1

Conversation

@JIANGZEHUI0319
Copy link
Copy Markdown
Contributor

判断一个类加载器是不是被BootstrapClassLoader 加载的,应该使用XXXClaissLoader.getClass().getClassLoader()是不是为null来判断,getParent()只是获取类加载器在委派链中的父类加载器,两个是不同概念。我可以自定义一个类加载器,通过new MyClassLoader(null)主动设置parent为null打破双亲委派。但是我的MyClassLoader这个类是被AppClassLoader加载的。具体可以通过一下代码验证:

/**
 * @author simon_jiang
 * @version 1.0
 */
public class ClassLoaderTest {
    public static void main(String[] args) {

        // 创建一个父加载器为null的自定义类加载器
        MyClassLoader myLoader = new MyClassLoader(null);

        // 查看MyClassLoader类是由哪个类加载器加载的
        System.out.println(MyClassLoader.class.getClassLoader());

        // 查看我们创建的myLoader实例的父加载器
        System.out.println(myLoader.getParent()); // 输出:null
    }
}


class MyClassLoader extends ClassLoader {
    public MyClassLoader(ClassLoader parent) {
        super(parent);
    }
}

判断一个类加载器是不是被BootstrapClassLoader 加载的,应该使用XXXClaissLoader.getClass().getClassLoader()是不是为null来判断,getParent()只是获取类加载器在委派链中的父类加载器,两个是不同概念。我可以自定义一个类加载器,通过new MyClassLoader(null)主动设置parent为null打破双亲委派。但是我的MyClassLoader这个类是被AppClassLoader加载的。
@Snailclimb Snailclimb merged commit 31ae380 into Snailclimb:main Jul 2, 2025
@Snailclimb Snailclimb added the doc-bug Content error label Jul 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

doc-bug Content error

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants