我看到的代码如下
GroovyClassLoader cLoader = new GroovyClassLoader(this.class.getClassLoader())
其次是类似的东西:
cLoader.loadClass([class name])
我对我应该了解的
GroovyClassLoader
类以及 this.class.getClassLoader()
的目的很感兴趣。 最佳答案
类加载器以垂直层次结构的方式工作,实际上在 Java 中,在这个层次结构中内置了三个类加载器:
因此,当您将 this.class.getClassLoader(
) 传递给构造函数时,您正在创建一个类加载器,其父类是加载当前类的类加载器,这将为您提供这种类加载器层次结构。
为什么要以这种方式创建类加载器?为什么不获取内置的呢?那取决于你。
但这里要提醒的一个事实是类加载器以自上而下的方式加载类。类加载器要求其父类加载一个类,如果父类无法找到它自己加载类的类(注意调用是重复的),另一个事实是类加载器有一个缓存,加载的类会缓存一段时间。
所以我通常使用 Thread.currentThread.getClassLoader()
(我认为它类似于 urs)因为这给了我加载当前正在运行的线程的加载器,我相信它靠近我的其他类,希望它可能已经缓存了我请求的类。