<分区>
ClassLoader有多个子类:BootstrapClassLoader、ExtClassLoader、AppClassLoader等。
不过,我觉得只有一个BootstrapClassLoader就够了!
谁能告诉我为什么有这么多不同种类的类加载器?
注意:这就是为什么有这么多种类的类加载器,而不是为什么有这么多类加载器的实例!
标签 java jvm classloader
<分区>
ClassLoader有多个子类:BootstrapClassLoader、ExtClassLoader、AppClassLoader等。
不过,我觉得只有一个BootstrapClassLoader就够了!
谁能告诉我为什么有这么多不同种类的类加载器?
注意:这就是为什么有这么多种类的类加载器,而不是为什么有这么多类加载器的实例!
最佳答案
每个类加载器都设计用于从不同位置加载类。例如,您实际上可以创建一个类加载器,它将从网络服务器加载类文件或从远程 Web 服务器下载类的二进制文件等。执行此操作的逻辑被嵌入到类加载器本身并提供一致的接口(interface),以便客户端可以加载类,而不管类加载器实际如何执行加载。 BootstrapClassLoader 能够从 JVM_HOME/lib 目录加载类...但是如果您需要从不同的位置加载它们呢??
简而言之,因为加载类的方法有无数种(好吧,不完全是),所以需要有一个灵活的系统来允许开发人员以他们想要的方式加载它们。
关于java - 我认为java中只有一种类加载器就足够了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9627661/