2014-04-04 45 views
0

我得到以下簽名的Java:調用帶有可變長度參數列表的方法有一個ArrayList任意長度

foo(Object...){} 

的功能,我得到了一個ArrayList「列表」

哪有我用任意長度的ArrayList調用該函數。我的意思是我怎樣才能避免這種

if(list.size == 1){ 
    foo(list.get(0)) 
}else if(list.size == 2){ 
    foo(list.get(0),list.get(1)) 
} 
+0

我從第二代碼塊瞭解到,你用多種方法重載foo(),每個方法都採用不同數量的參數?然後你有一個可變參數方法嗎?那你然後用正確的重載方法調用?爲什麼不直接循環varargs方法中的對象,並在循環中執行任何必需的操作? –

回答

2

你可以叫toArray()ArrayList到一個數組傳遞給你的可變參數方法foo

foo(list.toArray()); 
+0

事實上,甚至更好:'foo(list.toArray(new ArrayList <>(list.size())));' –

+0

@MenoHochschild當然,這也適用,但是因爲'foo'方法需要'Object .. 。它會以任何方式工作。 – rgettman

相關問題