更新時間:2020-05-21 15:16:26 來源:動力節點 瀏覽2273次
如果要調用的方法可以和兩個可變參數匹配,則出現錯誤,例如下面的代碼:
packagecom;
//這里使用了靜態導入
importstaticjava.lang.System.out;
publicclassVarArgsTest1{
publicvoidprint(String...args){
for(inti=0;i<args.length;i++){
out.println(args[i]);
}
}
publicvoidprint(Stringtest,String...args){
out.println("----------");
}
publicstaticvoidmain(String[]args){
VarArgsTest1test=newVarArgsTest1();
test.print("hello");
test.print("hello","alexia");
}
}
對于上面的代碼,main方法中的兩個調用都不能編譯通過,因為編譯器不知道該選哪個方法調用,如下所示:
3.3一個方法只能有一個可變長參數,并且這個可變長參數必須是該方法的最后一個參數
以下兩種方法定義都是錯誤的。
publicvoidtest(String...strings,ArrayListlist){
}
publicvoidtest(String...strings,ArrayList...list){
}
4.可變長參數的使用規范
4.1避免帶有可變長參數的方法重載:如3.1中,編譯器雖然知道怎么調用,但人容易陷入調用的陷阱及誤區
4.2別讓null值和空值威脅到變長方法,如3.2中所示,為了說明null值的調用,重新給出一個例子:
packagecom;publicclassVarArgsTest1{
publicvoidprint(Stringtest,Integer...is){
}
publicvoidprint(Stringtest,String...args){
}
publicstaticvoidmain(String[]args){
VarArgsTest1test=newVarArgsTest1();
test.print("hello");
test.print("hello",null);
}
}
這時會發現兩個調用編譯都不通過:
以上就是動力節點java培訓機構的小編針對“Java可變長參數使用的注意事項”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習