J2SE5.0 執行個體---變長參數
來源:互聯網
上載者:User
j2se 變長參數(Varargs)
與泛型一樣,變長參數是C++中有而Java中沒有的一種語言特性,在過去如果我們想向一個函數傳遞可變數量的函數,就必須首先將這些參數放入一個數組中,然後將數組傳遞給函數。就如同下面所作的一樣:
Object[] arguments = { 640, "kb", "anybody", "Bill Gates" };
String result = MessageFormat.format(
"{3}:{0,number,integer}{1} ought to be enough for {2} ",
arguments);
在J2SE5.0中,參數仍然是被放入一個數組中傳給對應的方法,但是不同的是,你不再需要手動的建立數組,而是只需要將那些參數羅列出來,其他的工作由虛擬機器替你完成。所以現在我們可以這樣寫:
String result = MessageFormat.format(
"{3}:{0,number,integer}{1} ought to be enough for {2} ",
640, "kb", "anybody", "Bill Gates");
我們通過一個樣本函數來說明使用變長參數函數的定義。這個函數列印出一個人養的幾條狗的名字。
private void printDogNames(String... dogs)
{
System.out.println("I have " + dogs.length + " dogs:");
for(String dogname:dogs)
{
System.out.println(dogname);
}
}
事實上變長參數dogs是一個數組。
一個函數的參數中只能有一個變長參數,所以類似下面的定義是不合法的:
private void printDogNames(String... dogs,float... dogage)
如果決定把函數參數設定為可變長度的,你必須想到這樣一種情況,就是調用的程式很可能會不給你傳任何的參數,這個時候作為參數的數組length為0,而這在文法上是完全合法的,所以你必須在函數定義中考慮到這種情況。