从JDK5开始增加了varargs(variable-length arguments)功能来实现可变长度实参。varargs方法可以接受可变数量的实参。
varargs由3个句点指定(...)。
例如:
public class Main {
public static void main(String [] args){
Test(10);
Test(1, 2, 3);
Test();
}
static void Test(int ...v){
System.out.println(v.length);
for(int i = 0; i<v.length; i++){
System.out.print(v[i] + " ");
}
System.out.println();
}
}
结果为:
1
10
3
1 2 3
0
其中Test方法分别被传入了1个、3个、0个参数,"..."只是告诉编译器使用了可变长度的实参,这些实参保存在v数组中。而且,把v隐式声明为一个int[]类型的数组。
一个方法可以具有正常的形参和可变长度的形参。但是,可变长度形参必须是方法声明的最后一个形参。而且,可变长度形参只能有一个。
例如:
int Test(int a, int b, double c, int ...vals){} //正确
int Test(int a, int b, int ...vals, double c){} //错误
int Test(int a, int b, double c, int ...vals, double ... var){}//错误,非法