虽然这不是标准做法,但我很好奇是否可以将方法注入GroovyShell
编译上下文。
这个想法是有类似的东西(在Java中):
GroovyShell shell = new GroovyShell();
Script script = shell.parse("test()");
script.run();
我想在哪里动态添加可调用的方法,在哪里test()
列出。
Script
metaClass
我已经尝试了一些弄乱metaClass
. 特别是,调用script.getMetaClass().getMethods().add(...)
会引发 UnsupportedOperationException。
本质上,我想定义调用 Java 方法而不是基于 Groovy 的方法的 DSL 调用点。我愿意在 Groovy 中编写这部分(并且知道如何做到这一点),但我真的很好奇这是否是一种可行的替代方法,或者如果不是,那么陷阱是什么。
简而言之:我如何动态定义一个GroovyShell
知道的方法?