前言:在java 5中提供了“Varargs”机制(可变参数),也就是可以定义一个和多个实参相匹配的形参,简而言之就是可以在方法定义中使用个数不确定的参数。
Varargs的原理
java可变长参数的实现原理是通过编译器将参数列表封装成一个数组进行传递的。
Varargs的使用
先举个简单的例子:


从上图中,我们可以看到第一个调用的地方传入了6个参数,第二个调用的地方传入了5个参数,但是他都调用了一个方法,不像之前要写两个方法来匹配这些参数,这就是varargs机制的好处。同时我们也看到varargs的使用比较简单,在变量类型后面添加...就行,然后调用的时候添加自己想要添加的参数就行。这里我用了泛型,有还不要了解的小伙伴可以自行百度一下,简单的说就是可以传入不同类型的参数,你也可以进行写死,比如print(String... args),但是这样就只能传入string类型的参数了。
Varargs的使用规则
1.优先匹配固定参数


从图中我们可以看到,执行了固定个数参数的方法。
2.当可调用方法和两个可变长参数匹配时,编译器报错。

从上图中可以看到,编译器报错了。
3.一个方法只能有一个可变长参数且该参数只能放在最后

从图中可以看到编译器要求放在参数列表的最后一个,进而可以得出一个参数列表只能有一个可变长参数。
Varargs的使用规范
1.尽量避免带有可变长参数方法的重载,以免引起不必要的错误
2.避免null值威胁到可变长参数的方法。
具体请看这里
Varargs用起来还是蛮好的,请方便的,也解决不少代码冗余的问题。
如有什么问题,请告知,谢谢!
网友评论