我有两个参数的函数:
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语法的,编译器会返回错误。 有没有办法传递真正的价值观?
答案 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);