例如:
public
void doSomething(String[] args) {
...
}
...
}
然後使用時,先將欲傳入的引數收集起來,再送給方法,例如:
doSomething(new
String[] {"
一", "二", "三"});
事實上,當你寫第一個Java程式時,就早已經在用這個方式了,也就是接受命令列引數的main程式進入點:
public
static void main(String[] args) {
}
}
你沒辦法預測使用者啟用程式時,即將指定幾個命令列引數,故而必須使用陣列來加以收集。當然,就使用該方法而言,使用陣列收集引數並不是很直覺的作 法,如 果你使用的是JDK5之後的版本,則可以使用以下的語法:
public
void doSomething(String... args) {
...
}
...
}
而在使用時,可以直接如呼叫方法般設定引數值:
doSomething
("一", "二", "二");
事實上,如果你曾使用過System.out的printf()方法,就使用過這個功能了,out參考至PrintWriter實例,隨便找個 PrintWriter的printf()方法的原始碼,就可以看到:
public
PrintWriter printf(String
format, Object ... args)
如果你反組譯程式碼,事實上就可以看到,編譯器將...這 樣的語法,展開為陣列:
public
transient
void doSomething(String as[]) {
...
}
...
}
而呼叫方法時,也是展開為陣列收集的方式:
doSomething(new
String[] {
"\u4E00", "\u4E8C", "\u4E09"
});
"\u4E00", "\u4E8C", "\u4E09"
});
一切沒什麼不同,只不過在語法上更為直覺,而其餘的細節交給編譯器來處理。
所以,在JDK5之後,事實上main程式進入點,也可以撰寫為以下的格式:
public
static void main(String... args) {
}
}