2012-04-15 47 views
1

Antescript:我知道有一个前面的问题,它的标题听起来像是指同一个问题。它没有。可变参数初始化(Java)

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

比方说,我有一种方法,使用可变参数接受任意数量的元素,可能是Integer类型。如果我有一个任意长度的Integers数组,有没有办法让我用由数组中的每个元素组成的逗号分隔参数列表来调用我的方法?

这里有一个简单的,人为的例子:

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行)将不起作用。我想知道的是,是否有办法从数组的元素中动态生成逗号分隔的参数列表。

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

回答

5

我认为你只是在寻找:

varMethod(paramList); 

也许你没有意识到,Integer...是正常Integer[]阵列的一个特殊的变种。因此,因为paramList已经是Integer[]数组,您可以直接将它传递给该方法。

+0

你打我.... – confucius 2012-04-15 00:19:21

+0

完全正确;我不知道可变参数只是数组的一个特例。谢谢! – Walker 2012-04-17 17:54:30

0

你可以直接调用 varMethod(paramList);