如果要調(diào)用的方法可以和兩個可變參數(shù)匹配,則出現(xiàn)錯誤,例如下面的代碼:
packagecom;
//這里使用了靜態(tài)導(dǎo)入
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方法中的兩個調(diào)用都不能編譯通過,因?yàn)榫幾g器不知道該選哪個方法調(diào)用,如下所示:
3.3一個方法只能有一個可變長參數(shù),并且這個可變長參數(shù)必須是該方法的最后一個參數(shù)
以下兩種方法定義都是錯誤的。
publicvoidtest(String...strings,ArrayListlist){
}
publicvoidtest(String...strings,ArrayList...list){
}
4.可變長參數(shù)的使用規(guī)范
4.1避免帶有可變長參數(shù)的方法重載:如3.1中,編譯器雖然知道怎么調(diào)用,但人容易陷入調(diào)用的陷阱及誤區(qū)
4.2別讓null值和空值威脅到變長方法,如3.2中所示,為了說明null值的調(diào)用,重新給出一個例子:
packagecom;publicclassVarArgsTest1{
publicvoidprint(Stringtest,Integer...is){
}
publicvoidprint(Stringtest,String...args){
}
publicstaticvoidmain(String[]args){
VarArgsTest1test=newVarArgsTest1();
test.print("hello");
test.print("hello",null);
}
}
這時會發(fā)現(xiàn)兩個調(diào)用編譯都不通過:
以上就是北大青鳥長沙麓谷校區(qū)java培訓(xùn)機(jī)構(gòu)的小編針對“Java可變長參數(shù)使用的注意事項”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。