由于参数个数不确定,只要参数的类型确定,java把可变参数当做数组处理,示例如下:
package com.test;
public class demo {
public static void main(String [] args) {
sum(1,2,3,4,5);
}
public static void sum(int ... args) {
int sum = 0;
for(int arg : args) {
sum += arg;
}
System.out.println(sum);
}
}
也可以写成:
package com.test;
public class demo {
public static void main(String [] args) {
Integer arr[] = {1,2,3,4,5};
sum(arr);
}
public static void sum(Integer ... args) {
int sum = 0;
for(int arg : args) {
sum += arg;
}
System.out.println(sum);
}
}
可变参数常用的地方比如java.util.Arrays类中的asList(T... a)方法:
List list = Array.asList(1,2,3,4);
System.out.println(list);
或者:
Integer arr[] = {1,2,3,4,5};
List list = Array.asList(arr);
System.out.println(list);
需要注意的是,如果使用基本数据类型int,asList会吧数组自身当做一个对象放进去。
类似的可变参数还有java.lang.reflect.Method类的invoke方法、java.lang.Class的getMethod方法等等,不做深究。