2011-08-30 51 views
33

Spring框架使用方法,您可以根據需要傳遞儘可能多的參數。具有無限參數的Java方法

我想寫一個函數,也可以採取無限量的數據。這個功能是如何調用的,以便我可以閱讀它。或者我該如何定義它?

非常感謝。

+0

哪個類有這種方法?也許就像靜態主(String []參數) – jjchiw

+0

定義「無限量的數據」。 – pap

回答

93

它被稱爲varargs

它允許一個方法採取任意數量的參數。他們是在該方法的數組訪問:

public void foo(String... args) { 
    for (String arg : args) { 
     // do smth with arg. 
    } 
} 

這是syntactic sugar。編譯器隱藏數組創建,所以不是

bar.foo(new String[] {"1", "2", "3"}); 

你寫

bar.foo("1", "2", "3"); 
4

要添加Bozho的答案,你也可以在你的方法,其他參數可變參數之前:

// foo(13, "foo", "bar", "baz"); 
// will print: 
// 13 - |foo||bar||baz| 
public void foo(int a, String... b) { 
    System.out.println(a + " - "); 

    for (String c : b) { 
     System.out.print("|" + c + "|"); 
    } 
} 

但是,您不能在之後擁有不同類型的參數。這些不起作用:

public void bar(String... b, int b); 
public void foo(int a, String... b, int b);