變長(zhǎng)參數(shù)(Varargs)
與泛型一樣,變長(zhǎng)參數(shù)是C++中有而Java中沒(méi)有的一種語(yǔ)言特性,在過(guò)去如果我們想向一個(gè)函數(shù)傳遞可變數(shù)量的函數(shù),就必須首先將這些參數(shù)放入一個(gè)數(shù)組中,然后將數(shù)組傳遞給函數(shù)。就如同下面所作的一樣:
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中,參數(shù)仍然是被放入一個(gè)數(shù)組中傳給對(duì)應(yīng)的方法,但是不同的是,你不再需要手動(dòng)的創(chuàng)建數(shù)組,而是只需要將那些參數(shù)羅列出來(lái),其他的工作由虛擬機(jī)替你完成。所以現(xiàn)在我們可以這樣寫(xiě):
String result = MessageFormat.format(
"{3}:{0,number,integer}{1} ought to be enough for {2} ",
640, "kb", "anybody", "Bill Gates"); |
我們通過(guò)一個(gè)示例函數(shù)來(lái)說(shuō)明使用變長(zhǎng)參數(shù)函數(shù)的定義。這個(gè)函數(shù)打印出一個(gè)人養(yǎng)的幾條狗的名字。
private void printDogNames(String... dogs)
{
System.out.println("I have " + dogs.length + " dogs:");
for(String dogname:dogs)
{
System.out.println(dogname);
}
} |
事實(shí)上變長(zhǎng)參數(shù)dogs是一個(gè)數(shù)組。
一個(gè)函數(shù)的參數(shù)中只能有一個(gè)變長(zhǎng)參數(shù),所以類似下面的定義是不合法的:
private void printDogNames(String... dogs,float... dogage) |
如果決定把函數(shù)參數(shù)設(shè)置為可變長(zhǎng)度的,你必須想到這樣一種情況,就是調(diào)用的程序很可能會(huì)不給你傳任何的參數(shù),這個(gè)時(shí)候作為參數(shù)的數(shù)組length為0,而這在語(yǔ)法上是完全合法的,所以你必須在函數(shù)定義中考慮到這種情況。
posted on 2005-05-22 16:46
幻 閱讀(1398)
評(píng)論(0) 編輯 收藏 所屬分類:
編程相關(guān)