我需要将参数传递给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量的变量。 / p>
答案 0 :(得分:2)
“...”运算符接受数组,因此您可以执行以下操作:
ArrayList <String> values = someOtherMethod();
func(values.toArray(new String[values.size()]);
答案 1 :(得分: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[]));
}
答案 2 :(得分:1)
我猜func需要X量的String变量,
我猜您正在寻找 Varargs。
将您的功能签名更改为
public someReturnType func(String... vargs) { }
其中args的长度可变为参数。
然后在方法内部,您可以像
一样访问它们 for (String currentarg: args) {
// do something with currentarg
}
作为旁注:仅适用于1.5版本。