我看到类似的代码
GroovyClassLoader cLoader = new GroovyClassLoader(this.class.getClassLoader())
后面是这样的:
cLoader.loadClass([class name])
我感兴趣的是关于 GroovyClassLoader
类以及 this.class.getClassLoader()
的用途是什么。
最佳答案
类加载器以垂直层次结构的方式工作,事实上在 java 中有三个内置的类加载器在这个层次结构中:
因此,当您将 this.class.getClassLoader(
) 传递给构造函数时,您正在创建一个类加载器,其父级是加载当前类的类加载器,这将为您提供这种类加载器层次结构。
为什么要以这种方式创建类加载器?为什么不获取内置的类加载器?那取决于你。
但这里要提醒的一个事实是类加载器以自上而下的方式加载类。一个类加载器要求它的父类加载一个类,如果父类找不到它自己加载类的类(注意调用是重复的),另一个事实是类加载器有一个缓存,加载的类被缓存一段时间。
所以我通常使用 Thread.currentThread.getClassLoader()
(我相信这与你的相似)因为这为我提供了加载当前运行线程的加载器,我相信它接近我的其他类,希望它可能已经缓存了我请求的类。
关于java - GroovyClassLoader/ClassLoader 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30077102/