2013-05-21 73 views
14

我在Java中工作,典型的方式,你指定的方法多ARGS正確的術語是:爲對象的參數... args

public static void someMethod(String[] args) 

不過,我已經看到了另一種方式了幾次,甚至在標準的Java庫中。我不知道如何在談話中提及這一點,並且由於使用了字符,使用谷歌搜索功能幫助不大。

public static void someMethod(Object... args) 

我知道這可以讓你串一串或參數到一個方法,不知道時間提前究竟有多少可能,如:

someMethod(String arg1, String arg2, String arg3, ... etc 

你怎麼指這類方法簽名設置?我認爲這很棒,很方便,並且希望向其他人解釋,但是我缺乏如何提及這一點。謝謝。

+2

參見[可變參數](http://docs.oracle.com/javase/7/docs/technotes/guides/language/varargs.html) – Reimeus

回答

14

這樣的方式來表達的論點被稱爲可變參數,並在Java 5中
介紹你可以閱讀更多關於他們here

+0

看起來像C/C++主要功能 –

+0

@huseyintugrulbuyukisik?在C/C++主函數是'main(void)'或'main(int argc,char * argv [])'...不完全一樣...除非我失去了一些東西? – SnakeDoc

+1

你說得對。抱歉。 –

5

參數方法(Object ... args)被稱爲varargs。試試這個link

5

作爲一個Keppil和史蒂夫貝內特指出,這個Java功能被稱爲可變參數。

如果我沒有弄錯的話,Joshua Bloch提到使用可變參數有一個性能問題,並建議使用可變參數法和可變參數法作爲所有接收器。

public static void someMethod(Object arg) { 
    // Do something 
} 

public static void someMethod(Object arg1, Object arg2) { 
    // Do something 
} 

public static void someMethod(Object arg1, Object arg2, Object arg3) { 
    // Do something 
} 

public static void someMethod(Object ... args) { 
    // Do something 
} 
+1

+1這個對話很棒。我認爲這是Jashua Bloch的鏈接:http://jtechies.blogspot.com/2012/07/item-42-use-varargs-judiciously.html 有意義,這似乎是一個很好的方法關於具有表現的varags。 – SnakeDoc