使用GroovyClassLoader
时,我应该何时使用loadClass
,何时应致电parseClass
?
如果我理解,第一次调用loadClass()
将编译脚本,后续调用将使用缓存的类文件而不是重新编译它。
但那么parseClass
呢?
答案 0 :(得分:4)
documentation for parseClass
表明它接受包含Groovy代码的File或String,并将其转换为类。
如果函数传递给File,那么GroovyClassLoader将缓存这个生成的类,但是如果传递了一个String,它就是will not cache it。
函数loadClass
(来自the documentation)说:
从文件或父类加载器加载一个类。
它的基本功能是查找classLoader中已存在的类,如果找不到它,请在磁盘上查找匹配名称的脚本文件。
加载此类后,它将被缓存。下次您致电loadClass
时,它将使用此缓存的类,除非您为false
传递preferClassOverScript
。如果您通过false
,则会尝试再次在磁盘上找到该脚本,recompile the class如有必要。