我得到以下簽名的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))
}
我得到以下簽名的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))
}
你可以叫toArray()
您ArrayList
到一個數組傳遞給你的可變參數方法foo
。
foo(list.toArray());
事實上,甚至更好:'foo(list.toArray(new ArrayList <>(list.size())));' –
@MenoHochschild當然,這也適用,但是因爲'foo'方法需要'Object .. 。它會以任何方式工作。 – rgettman
我從第二代碼塊瞭解到,你用多種方法重載foo(),每個方法都採用不同數量的參數?然後你有一個可變參數方法嗎?那你然後用正確的重載方法調用?爲什麼不直接循環varargs方法中的對象,並在循環中執行任何必需的操作? –