原創文章,轉載請注明。
我們看如下一個方法的聲明。
public static void tst( Object... initargs){
System.out.println(initargs.length);
System.out.println(initargs[0]);
}
參數中那三個小數點代表什麼意思呢?這代表方法自動重載。也就是我們如下的代碼都是合法的。
tst();//0,報異常
tst(1);//1,1
tst(1,2);//2,1
tst(1,2,3);//3,1
其實作原理為自動地将initargs轉換為一個Object[ ]數組。
這就問題來了,如果我們的參數本身就是一個數組,怎麼辦?如下代碼:
String[] strArr = new String[2];
strArr[0]="a";
strArr[1]="b";
tst(strArr);//2,a
可見,如果傳入的是數組,則Java預設就不再去轉換Object數組了,也就會造成參數錯誤。
解決辦法就是,再初始化一個Object[]數組,傳入函數,如下代碼所示:
String[] strArr = new String[2];
strArr[0]="a";
strArr[1]="b";
Object[] args = new Object[1];
args[0]=strArr;
tst(args);//1,{“a”,"b"}