如何在Groovy中传递值

时间:2016-11-22 16:38:13

标签: java groovy

我有两个参数的函数:

repositories {
    jcenter()
    url 'https://my.repo/snapshots/'
}

dependencies {
    compile "some.thing:blah:1.0-SNAPSHOT"
}

我使用Groovy所以我还需要在我的程序中调用此函数:

private void function(LinkedList<String> a, LinkedList<String> b)

但是当我调用它并传递我看到的值时:

LinkedList<String> list1 = new LinkedList<String>();
LinkedList<String> list2 = new LinkedList<String>();
list1.add("A");
list1.add("B");
list1.add("C");
list2.add("A");
list2.add("B");
String command = "function(list1, list2)";
Binding binding = new Binding();
GroovyShell shell = new GroovyShell(binding);
Object value = shell.evaluate(command);

当然这是违反java语法的,编译器会返回错误。 有没有办法传递真正的价值观?

1 个答案:

答案 0 :(得分:1)

如果你真的想要内联调用(并在Groovy中编写),你可以声明一个新的LinkedList,并以列表作为参数:

String command = "function(new LinkedList(['A','B', 'C']), new LinkedList(['A', 'B']))"; 

否则你可以将它们添加到绑定中,如@tim_yates所说:

binding.setProperty("list1", list1);
binding.setProperty("list2", list2);