gpt4 book ai didi

java - GroovyClassLoader/ClassLoader 是如何工作的?

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

我看到类似的代码

GroovyClassLoader cLoader = new GroovyClassLoader(this.class.getClassLoader())

后面是这样的:

cLoader.loadClass([class name])

我感兴趣的是关于 GroovyClassLoader 类以及 this.class.getClassLoader() 的用途是什么。

最佳答案

类加载器以垂直层次结构的方式工作,事实上在 java 中有三个内置的类加载器在这个层次结构中:

class loader hierarchy

因此,当您将 this.class.getClassLoader() 传递给构造函数时,您正在创建一个类加载器,其父级是加载当前类的类加载器,这将为您提供这种类加载器层次结构。

enter image description here

为什么要以这种方式创建类加载器?为什么不获取内置的类加载器?那取决于你。

但这里要提醒的一个事实是类加载器以自上而下的方式加载类。一个类加载器要求它的父类加载一个类,如果父类找不到它自己加载类的类(注意调用是重复的),另一个事实是类加载器有一个缓存,加载的类被缓存一段时间。

所以我通常使用 Thread.currentThread.getClassLoader()(我相信这与你的相似)因为这为我提供了加载当前运行线程的加载器,我相信它接近我的其他类,希望它可能已经缓存了我请求的类。

关于java - GroovyClassLoader/ClassLoader 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30077102/

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