gpt4 book ai didi

java - 为什么在java中加载类时委托(delegate)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:20:09 25 4
gpt4 key购买 nike

如 javase 7 文档所述

The ClassLoader class uses a delegation model to search for classes and resources. Each instance of ClassLoader has an associated parent class loader. When requested to find a class or resource, a ClassLoader instance will delegate the search for the class or resource to its parent class loader before attempting to find the class or resource itself.

为什么 ClassLoader 将类或资源的搜索委托(delegate)给它的父类?这样做的目的或好处是什么?

最佳答案

类加载委托(delegate)有几个正当理由。我根据他们的优先级列出了他们(根据我的理解):

安全

Java 中的某些类不应被混淆。通过父优先委派模型,JVM 可以确保它只执行那些类,而不是自定义类加载器加载的类。

避免重复的类实例

类加载是一项代价高昂的操作,因为它需要从外部存储或网络读取数据、解析字节码、分配内存等。所以限制 JVM 只加载一次类是原因之一。通过使用父优先规则形成类加载器层次结构将实现这一点。

类范围

有些类是Java 的核心部分,例如java.lang.*。这些类是Java语言的一部分,几乎所有地方都会用到。由于类由其完全限定名称以及加载该类的类加载器唯一标识,因此使用单个类加载器来加载此类类非常重要。因此, Bootstrap 和扩展类加载器会处理这个问题。此外,通过在顶层加载类和资源,比在类加载器层次结构的底部加载更广泛的范围。

关于java - 为什么在java中加载类时委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41643204/

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