groovy 解析类 loadClass
使用GroovyClassLoader
时,什么时候应该使用loadClass
,什么时候应该调用parseClass
?
如果我理解的话,第一次调用 loadClass()
将编译脚本,后续调用将使用缓存的类文件,而不是重新编译它。
那么 parseClass
又如何呢?
When using the GroovyClassLoader
, when should I use loadClass
and when should I call parseClass
?
If I understand it, the first call to loadClass()
will compile the script, and subsequent calls will use the cached class file rather than recompiling it.
But what about parseClass
then?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
parseClass 的文档
显示它接受包含 Groovy 代码的文件或字符串,并将其转换为类。
如果函数传递一个文件,那么 GroovyClassLoader 将缓存这个生成的类,但如果它传递一个字符串,它 不会缓存它。
函数
loadClass
(来自 文档)说:它的基本作用是查找类加载器中已存在的类,如果找不到,则在磁盘上查找具有匹配名称的脚本文件。
一旦这个类被加载,它就会被缓存。下次调用
loadClass
时,它将使用此缓存的类,除非您为preferClassOverScript
传递false
。如果您传递false
,它将尝试再次在磁盘上查找脚本,如有必要,重新编译该类。The documentation for
parseClass
shows that it takes a File or a String containing Groovy code, and converts it into a class.If the function is passed a File, then the GroovyClassLoader will cache this generated class, but if it is passed a String, it will not cache it.
The function
loadClass
(from the documentation) says:What it basically does, is looks for the class already existing in the classLoader, and if it fails to find it, look for the script file on disk with the matching name.
Once this class is loaded, it will be cached. The next time you call
loadClass
, it will use this cached class unless you passfalse
for thepreferClassOverScript
. If you passfalse
, it will attempt locate the script on disk again, recompile the class if necessary.