groovy 解析类 loadClass

发布于 2024-12-11 02:29:30 字数 222 浏览 0 评论 0原文

使用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

長街聽風 2024-12-18 02:29:30

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:

loads a class from a file or a parent classloader.

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 pass false for the preferClassOverScript. If you pass false, it will attempt locate the script on disk again, recompile the class if necessary.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文