1

Antescript:我知道有一个先前的 SO 问题,其标题听起来像是指的是完全相同的问题。它没有。

无论如何,这个问题有点奇怪 - 有很多更好的方法可以解决这里的问题,但我很好奇如何解决我的特殊困境。

假设我有一个方法,它使用可变参数来接受任意数量的元素,可能是 type 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 行)调用将不起作用。我想知道是否有一种方法可以从数组的元素中动态生成逗号分隔的参数列表。

再一次,我意识到在这样的例子中,有更好的方法来解决整个问题,但请注意我已经简化了代码,以便它只与我们在这里讨论的特定问题相关。解决我发布的代码的任何解决方法都不会概括为我真正正在解决的问题,这导致我首先制定了这个问题。

4

2 回答 2

5

我想你只是在寻找:

varMethod(paramList);

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

于 2012-04-15T00:18:58.080 回答
0

您可以只调用 varMethod(paramList);

于 2012-04-15T00:19:47.577 回答