要不要用java变长参数_Java中可变长参数的使用及注意事项

3.2 如果要调用的方法可以和两个可变参数匹配,则出现错误,例如下面的代码:

package com;

// 这里使用了静态导入

import static java.lang.System.out;

public class VarArgsTest1 {

public void print(String... args) {

for (int i = 0; i < args.length; i++) {

out.println(args[i]);

}

}

public void print(String test,String...args ){

out.println("----------");

}

public static void main(String[] args) {

VarArgsTest1 test = new VarArgsTest1();

test.print("hello");

test.print("hello", "alexia");

}

}

对于上面的代码,main方法中的两个调用都不能编译通过,因为编译器不知道该选哪个方法调用,如下所示:

c986dfd9c0675328dde53861c9dc75b9.png

3.3 一个方法只能有一个可变长参数,并且这个可变长参数必须是该方法的最后一个参数

以下两种方法定义都是错误的。

public void test(String... strings,ArrayList list){

}

public void test(String... strings,ArrayList... list){

}

4. 可变长参数的使用规范

4.1 避免带有可变长参数的方法重载:如3.1中,编译器虽然知道怎么调用,但人容易陷入调用的陷阱及误区

4.2 别让null值和空值威胁到变长方法,如3.2中所示,为了说明null值的调用,重新给出一个例子:

package com;public class VarArgsTest1 {

public void print(String test, Integer... is) {

}

public void print(String test,String...args ){

}

public static void main(String[] args) {

VarArgsTest1 test = new VarArgsTest1();

test.print("hello");

test.print("hello", null);

}

}

这时会发现两个调用编译都不通过:

c6b661bbef81ba4f3abcf291a23fa17d.png

42/4<1234>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值