有时候会对某个函数的入参无法确定输入个数,这个时候就需要使用可变参数,先来看看是如何使用的。
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
try {
uncertainParam("arg1","arg2","arg3");
} catch (Exception e) {
System.out.println(e.toString());
}
}
public static void uncertainParam(String ...param){
for(int i=0; i<param.length; i++) {
System.out.println(param[i]);
}
}
}
执行完后输出:
arg1
arg2
arg3
使用了可变参数后函数是否还能有其他的参数呢?答案是可以的,例如在可变参数前面加一个整型参数。
/**
* @param args
*/
public static void main(String[] args) {
try {
uncertainParam(100, "arg1","arg2","arg3");
} catch (Exception e) {
System.out.println(e.toString());
}
}
public static void uncertainParam(int size, String ...param){
for(int i=0; i<param.length; i++) {
System.out.println(param[i]);
}
System.out.println("the size is:"+size);
}
执行完的结果:
arg1
arg2
arg3
the size is:100
如果在可变参数的后面增加参数会怎么样呢?Java编译器会提示你可变参数必须位于最后一个参数。
通过前面的例子我们知道了可变参数是怎么使用的,已经在使用的过程中要注意的一些约束。那么可变参数到底是怎么实现的呢?打开编译后的java文件对应的class文件会发现,可变参数实际上是变成了一个数组。
public static void uncertainParam(String[] param) {
for (int i = 0; i < param.length; i++)
System.out.println(param[i]);
}