我有一个Groovy脚本。在Java中通过Binding我提供:
binding.put( 'a','Hello')
我通过GroovyShell运行脚本,我这样做:
print "${a}"
将打印
Hello
我需要print "${a}"
其中a
可以是调用其他方法的任何文本。
只需打印一个名称在运行时确定的变量。这怎么可能?
另一个澄清的例子:
binding.put( 'm','n')
binding.put( 'n','p')
打印????输出应该是'p'
,其中'm'
在脚本中已知,但不是'n'
答案 0 :(得分:1)
这样的事情会起作用:
// Java code...
Binding binding = new Binding();
binding.setVariable("m", "n");
binding.setVariable("n", "result");
// here the script is hardcoded in this Java source
// file but could be read from anywhere...
String groovyScript = "evaluate \"println(${m})\"";
GroovyShell shell = new GroovyShell(binding);
// this will println "result"
shell.evaluate(groovyScript);
我希望有所帮助。