天天看點

JAVA方法聲明中參數的那三個小數點

原創文章,轉載請注明。

        我們看如下一個方法的聲明。

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"}