有時(shí)候,我們傳入到方法的參數(shù)的個(gè)數(shù)是不固定的,為了解決這個(gè)問(wèn)題,我們一般采用下面的方法:
1.重載,多重載幾個(gè)方法,盡可能的滿(mǎn)足參數(shù)的 個(gè)數(shù)。顯然這不是什么好辦法。
2.將參數(shù)作為一個(gè)數(shù)組傳入。雖然這樣我們只需一個(gè)方法即可,但是,為了傳遞這個(gè)數(shù)組,我們需要先聲明一個(gè)數(shù)組,然后將參數(shù)一個(gè)一個(gè)加到數(shù) 組中。
現(xiàn)在,我們可以使用可變長(zhǎng)參數(shù)解決這個(gè)問(wèn)題。
聲明可變長(zhǎng)參數(shù)方式如下:
public void mymethod (Stringarg1,Object… args)
也就是使用…將參數(shù)聲明成可變長(zhǎng)參數(shù)。
顯然,可變長(zhǎng)參數(shù)必須是最后一個(gè)參數(shù)。
請(qǐng)看 下面唐僧師傅給悟空講佛經(jīng)的例子:
package com.ywz;
public class Varargs{
public void speak (String name,Object... arguments){
for(Object object : arguments) {
System.out.println(object);
}
}
public static void main(String[] args) {
Varargs va = new Varargs();
va.speak("悟空","人和妖精都是媽生的,");
va.speak("悟空","不同的人是人他媽生的,","妖是妖他媽生的,");
}
}
結(jié)果

這個(gè)方法很好的解決了我們傳遞不確定個(gè)數(shù)的參數(shù).當(dāng)然 Object... arguments中的Object 也可以換成自己寫(xiě)的類(lèi).
對(duì)于for(Object object : arguments),為什么能這樣寫(xiě)?
這樣的寫(xiě)法,好像是在JAVA1.5中加入的新特性,也就是相當(dāng)于:
for(int i=0;i<arguments.length;i++){
Object object = arguments[i];
}
知道怎樣用就行了.