我看到的代码如下

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

其次是类似的东西:
cLoader.loadClass([class name])

我对我应该了解的 GroovyClassLoader 类以及 this.class.getClassLoader() 的目的很感兴趣。

最佳答案

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

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



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

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

所以我通常使用 Thread.currentThread.getClassLoader()(我认为它类似于 urs)因为这给了我加载当前正在运行的线程的加载器,我相信它靠近我的其他类,希望它可能已经缓存了我请求的类。

10-08 13:24