[英]Passing arguments to a Java method
我需要將參數傳遞給java方法func(String, String...)
。 問題是我需要將所有字符串作為參數傳遞,但它們都在ArrayList
容器中。
例如:
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數量的String變量,但是當容器的大小不是常數時,我不知道如何將容器轉換為X數量的變量。
“ ...”運算符接受數組,因此您可以執行以下操作:
ArrayList <String> values = someOtherMethod();
func(values.toArray(new String[values.size()]);
這有點復雜,因為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[]));
}
我猜想func需要X數量的String變量,
我想您正在尋找Varargs。
更改功能簽名以接受
public someReturnType func(String... vargs) { }
它以可變長度的args作為參數。
然后在方法內部,您可以像訪問
for (String currentarg: args) {
// do something with currentarg
}
附帶說明:僅從版本1.5起可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.