Antescript:我知道之前有一个 SO 问题,其标题听起来像是指的是完全相同的问题。它没有。
无论如何,这个问题有点奇怪 - 有很多更好的方法可以解决这里的问题,但我很好奇如何解决我的特殊困境。
假设我有一个使用 varargs 的方法来接受任意数量的元素,可能是 Integer
类型。如果我有一个任意长度的整数数组,有没有办法使用由所述数组的每个元素组成的以逗号分隔的参数列表来调用我的方法?
这是一个简短的人为示例:
Integer[] paramList = new Integer {1, 2, 3};
varMethod(paramList[0], paramList[1], paramList[2]);
// varMethod({{for (param : paramList) {param;}}});
public void varMethod(Integer...values) {
for (Integer value : values) {
foo(value);
}
}
注释掉的那行暗示了我想做什么。由于 paramList
整数是任意长度,调用 varMethod
明确请求的每个元素(第 2 行)将不起作用。我想知道是否有一种方法可以从数组的元素动态生成以逗号分隔的参数列表。
同样,我意识到在这样的示例中,有更好的方法来解决整个问题,但请注意,我已经简化了代码,因此它只与我们在这里讨论的特定问题相关。解决我发布的代码的任何解决方法都不会概括为我真正正在研究的问题,这导致我首先提出了这个问题。
最佳答案
我想你只是在寻找:
varMethod(paramList);
也许您没有意识到 Integer...
是普通 Integer[]
数组的特殊变体。因此,由于 paramList
已经是一个 Integer[]
数组,您可以直接将它传递给方法。
关于java - 使用数组中的参数进行 Vararg 初始化 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158485/