将参数传递给Java方法

3

我需要向一个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] 等 不能作为参数传递。 我猜测 func 希望得到 X 个字符串变量,但我不知道如何将容器转换为 X 个变量,尤其当容器大小不固定时。

1
func 方法的精确签名是什么? - Sergey Kalinichenko
同时解释一下 func 方法的作用可能会减少猜测类型的回答,增加更高质量的回答。 - Simon Forsberg
3个回答

2
“...” 运算符可以接受数组,因此您可以执行以下操作:
ArrayList <String> values = someOtherMethod(); 
func(values.toArray(new String[values.size()]);

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[]));
}

1

我猜这个函数需要一定数量的字符串变量,

我猜你正在寻找可变参数。

将你的函数签名更改为接受

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

这个方法的参数可以接受可变长度的参数。

然后在方法内部,您可以像这样访问它们

  for (String currentarg: args) {

   // do something with currentarg
 } 

作为一个附带说明:仅从1.5版本开始可用。 了解有关Varargs的更多文档

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接