使用数组中的参数进行Vararg初始化(Java)

时间:2012-04-15 00:15:03

标签: java arrays parameters variadic-functions

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整数是任意长度,因此对显式请求的每个元素(第2行)调用varMethod将不起作用。我想知道的是,是否有办法从数组元素动态生成逗号分隔的参数列表。

同样,我意识到在这样的例子中,有更好的方法可以解决整个问题,但请注意我已经简化了代码,因此它只与我们在这里讨论的特定问题相关。解决我发布的代码的任何变通办法都不会归结为我正在努力解决的问题,这导致我首先提出这个问题。

2 个答案:

答案 0 :(得分:5)

我认为你只是在寻找:

varMethod(paramList);

也许您没有意识到Integer...是普通Integer[]数组的特殊变体。因此,paramList已经是Integer[]数组,您可以直接将其传递给方法。

答案 1 :(得分:0)

你可以打电话     varMethod(paramList);