在 J2SE 5.0 中開始支援不定長度引數(Variable-Length Argument),直接來看個例子:
public class MathTool {
要使用不定長度引數,在宣告引數時,於關鍵字後加上...,然後您可以這麼使用它:
public class TestVarargs {
執行結果會分別顯示3、6、15。 顯然的,從MathTool類別的sum()中您可以看到,實際上編譯器會將int... nums解譯為int[]
nums,而設定給方法的引數則會被化為int陣列傳入至sum()中,您只要將nums當作陣列來處理就是了。 public void someMethod(int arg1, int arg2, int... varargs) {
// .... } 但下面的方式是不合法的: public void someMethod(int... varargs, int arg1, int arg2) {
// .... } 您也沒辦法設定兩個以上的不定長度引數,例如下面的方式是不合法的: public void someMethod(int... varargs1, int... varargs2) {
// .... } 如果要物件的不定長度引數,其方法相同,例如: public void someMethod(SomeClass... somes) {
// .... } 回憶一下 給C使用者的第一個Java程式 中您介紹的printf(),在其中您可以設定多個引數,其實背後也是不定長度引數的原理,例如: System.out.printf("My name is %s and your name is %s.",
"caterpillar", "momor"); 編譯器會幫您解譯printf()的 ',' 之後的引數為陣列,再傳入 printf() 中作對應的處理。 |