更新时间:2020-05-21 15:16:26 来源:极悦 浏览1999次
如果要调用的方法可以和两个可变参数匹配,则出现错误,例如下面的代码:
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天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习