gpt4 book ai didi

java - Java ClassLoader 委托(delegate)模型的好处?

转载 作者:搜寻专家 更新时间:2023-11-01 02:44:57 24 4
gpt4 key购买 nike

据我所知,ClassLoader 首先检查类是否已加载,如果没有则立即将此检查委托(delegate)给其父 ClassLoader。但最后所有类都由 Bootstrap 加载。我们为什么要授权,我们通过授权获得的好处是什么?

最佳答案

实现不需要总是委托(delegate)给父类加载器。这取决于要求。如果要求一个类应该由类加载器实现加载,它可以加载它,即使它已经被另一个类加载器加载。

ClassLoader_1 加载的类(和实例)将无法被另一个 ClassLoader_2 加载的实例访问。这提供了额外的安全性。

例如,在浏览器中,每个域都可以被赋予自己唯一的类加载器(由浏览器实现)。可以将核心 java 类委托(delegate)给引导类加载器以优化核心类,因为它们不会有所不同。所有这些类加载器都可以加载到单个 JVM 中以优化资源使用。

现在,一个域的实例/类将无法访问由另一个类加载器加载的其他域的实例。如果他们访问跨站点,他们将收到 ClassCastException。

层次结构确保父级加载的类在子级之间兼容

您可以使用以下方法从执行线程访问当前上下文类加载器

Thread.getContextClassLoader();

您可以使用以下方法访问加载对象的类加载器

Object o = ....
o.getClass().getClassLoader();

关于java - Java ClassLoader 委托(delegate)模型的好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24857681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com