2013-09-28 191 views
2

我需要將參數傳遞給java方法func(String, String...)。 問題是我有所有需要作爲參數傳遞的字符串,但它們都在ArrayList容器中。將參數傳遞給Java方法

例如:

for(...some condition...) 
{ 
    //the other method returns an ArrayList with different size in each iteration 
    ArrayList <String> values = someOtherMethod(); 
    func(values) //values is an ArrayList<String>, containing all the arguments 
} 

我得到一個錯誤,指出ArrayList<String>不能轉換爲String。 值的大小發生變化,因爲someOtherMethod方法每次迭代都會返回一個容量不同的容器,所以我不能通過values[0], values[1], etc作爲參數。

我猜func想要X數量的字符串變量,但我不知道如何將一個容器轉換爲X數量的變量時,容器的大小不恆定。

+1

有什麼'func'方法的準確簽名? – dasblinkenlight

+0

也解釋了一些關於'func'方法的用法可能會導致較少的猜測類型的答案和更高質量的答案。 –

回答

2

的 「...」 運營商接受數組,所以你可以只做到以下幾點:

ArrayList <String> values = someOtherMethod(); 
func(values.toArray(new String[values.size()]); 
1

我猜FUNC希望字符串變量的X量,

我想你正在尋找Varargs。

更改函數簽名就可以接受作爲

public someReturnType func(String... vargs) { } 

這需要ARGS爲參數的可變長度。

,然後方法裏面,你可以像

for (String currentarg: args) { 

    // do something with currentarg 
} 

訪問它們作爲一個側面說明:可從1.5版本只。

Learn more from docs about Varargs

2

這是一個有點複雜,因爲func需要一個String,然後附加Strings任意號碼:

List<String> values = someOtherMethod(); 
if (values.isEmpty()) { 
    // handle special case 
} else{ 
    func(values.get(0), values.subList(1, values.size()).toArray(new String[])); 
}