Java SE5添加了可变参数列表特性
参数可以这样定义,(Object…args)。可变参数用"..."来定义,args是可变参数的数组。举个例子:
package sample;
class A{}
public class NewVarArgs {
static void printArray(Object...args){
for(Object obj:args)
System.out.print(obj+" ");
System.out.println();
}
public static void main(String[] args){
printArray(new Integer(47),new Float(3.14),new Double(11.11));
printArray(47,
printArray("one","two","three");
printArray(new A(),new A(),new A());
printArray((Object[])new Integer[]{1,2,3,4});
printArray();
}
}
输出结果为:
47 3.14 11.11
47 3.14 11.11
one two three
sample.A@a90653 sample.A@de6ced sample.A@c17164
1 2 3 4
当指定可变参数后,对于给定的可变参数实参,编译器会用这些实参去填充一个参数数组。这就是为什么args可以用foreach去遍历。但如果传入的参数本身就是一个数组时,编译器将接受这个数组作为可变参数列表,而不再为其外层包装为一个新的数组。