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

Wal*_*ker 1 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

这条注释掉的线条暗示了我想做的事情.由于paramList整数是任意长度,因此varMethod使用显式请求的每个元素(第2行)调用将不起作用.我想知道的是,是否有一种方法可以从数组元素动态生成逗号分隔的参数列表.

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

Kir*_*oll 5

我想你只是在寻找:

varMethod(paramList);
Run Code Online (Sandbox Code Playgroud)

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