在groovy中调用带有参数的方法



为简单起见,我们设代码如下:

def testMethod(String txt) {
    return txt;
}
public String evaluate(String expression) {
    //String result = "${testMethod('asdasdasd')}";
    String result = "${expression}";
    return result;
}

我需要传递给方法"evaluate"的表达式值来执行。

如果调用

// everything works perfectly well,
String result = "${testMethod('samplestring')}"; 

如果调用

// (when expression = testMethod) - everything works perfectly well,
String result = "${expression}"("samplestring"); 

如果调用

// (when expression = testMethod('samplestring'))  - it's not working.
// I see testMethod('samplestring') as the result, but I need it to be evaluated.
String result = "${expression}" 

我该怎么做呢?谢谢。

应该也可以;

Eval.me( "${expression}" )

编辑

如前所述,这不能正常工作,您需要传入包含Eval.x方法的脚本,如下所示:
def testMethod(String txt) {
    txt
}
public String evaluate(String expression) {
    String result = Eval.x( this, "x.${expression}" )
    result
}
println evaluate( "testMethod('samplestring')" )

打印samplestring

您可以为此目的使用GroovyShell类,但是您需要定义一个Binding AFAIK。这在Groovy控制台中工作:

def testMethod(txt) {
    "$txt!";
}
def evaluate(String expression) {
    def binding = new Binding(['testMethod': testMethod])
    new GroovyShell(binding).evaluate(expression)
}
evaluate('testMethod("Hello World")');

相关内容

  • 没有找到相关文章

最新更新