【发布时间】:2013-09-19 01:40:22
【问题描述】:
虽然这不是标准做法,但我很好奇是否可以将方法注入到 GroovyShell 编译上下文中。
这个想法是有类似的东西(在 Java 中):
GroovyShell shell = new GroovyShell();
Script script = shell.parse("test()");
script.run();
我想动态添加可调用的方法,test() 已在其中列出。
我已经尝试过处理 Script metaClass 的一些问题,但我看不到从 Java 中实际操作 metaClass 的方法。特别是,调用 script.getMetaClass().getMethods().add(...) 会引发 UnsupportedOperationException。
本质上,我想定义调用 Java 方法而不是基于 Groovy 的方法的 DSL 调用点。我愿意在 Groovy 中编写这部分(并且知道如何做到这一点),但我真的很好奇这是否是一种可行的替代方法,或者如果不是,那么陷阱是什么。
简而言之:如何动态定义GroovyShell 知道的方法?
【问题讨论】: