2012-04-15 48 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);