2016-11-22 55 views
0

我有兩個參數的函數:如何通過值在Groovy

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

我使用Groovy,所以我還需要調用這個函數在我的計劃:

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); 

但是當我把它和值傳遞我所看到的是:

function([A, B, C],[A, B]) 

當然,這是針對Java語法和編譯器返回錯誤回報。 有沒有辦法通過真正的價值?

+0

首先,爲什麼使用'LinkedList'作爲參數而不是'List'? Groovy的默認實現是'ArrayList'。另外,你嘗試*實際使用字符串*?即函數([「A」,「B」,「C」],[「A」,「B」])? – chrylis

+2

爲什麼不將list1和list2添加到綁定? –

回答

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);