什么时候用GroovyClassLoader,什么时候用loadClass,什么时候调用parseClass?
如果我理解它,第一次调用loadClass()将编译脚本,随后的调用将使用缓存的类文件而不是重新编译它。
但那parseClass又如何呢?
的文档parseClass显示它需要一个包含 Groovy 代码的文件或字符串,并将其转换为一个类。
如果函数传入一个 File ,那么 GroovyClassLoader 会缓存这个生成的类,但是如果传入一个 String ,它不会缓存它。
该功能loadClass(来自文档)说:
从文件或父类加载器加载类。
它的主要作用是查找 classLoader 中已经存在的类,如果找不到,则在磁盘上查找具有匹配名称的脚本文件。
一旦这个类被加载,它就会被缓存。你叫下一次loadClass,它会使用这个缓存类,除非你通过false了preferClassOverScript。如果通过false,它将尝试再次在磁盘上定位脚本,如有必要,重新编译该类。