先来了解一下如下java中是之前是如何处理的:
void add(int a )
void add(int a, int b)
void add (int a,int b,int c)
比如这里的add方法就是向集合中添加元素的方法,我们发现这样的重载会使得代码很臃肿,而且复用性也不是很高。
在之前的java版本中是这样设计的:
void add(int[] a)
就是将接受到的参数类型变成一个数组,在方法中对数组进行遍历,这样数组中有几个元素,就添加几个元素,从而就简化
了程序。
后来就出现了可变参数了,就可以将上边的代码写为:
void add(int...)
虽然形式上发生了改变,但其内部的调用方式是没有变化的,也就是将接受来个数不确定的参数,装在一个数组中,而且
从int...开始后所有的参数,就会作为数组中的元素装进数组中。
当然有的时候,参数中包含其他参数和可变参数,比如:
void add(String str,int...):那么从int...开始之后的参数就是可变参数,而str这个参数就不装入到数组中了。
那么,如果写成
void add(int...,String str) :根据调用的规则,str也会作为一个参数添加到数组中去,这当然与我们的程序设计初衷是不相符的。
所以,在使用可变参数的时候,要将可变参数定义在参数列表的最后面。
|