Java SE5加入了可变參数列表特性
參数能够这样定义。(Object…args)。可变參数用"..."来定义,args是可变參数的数组。举个样例:
输出结果为:
当指定可变參数后,对于给定的可变參数实參,编译器会用这些实參去填充一个參数数组。这就是为什么args能够用foreach去遍历。
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去遍历。
但假设传入的參数本身就是一个数组时。编译器将接受这个数组作为可变參数列表。而不再为其外层包装为一个新的数组。