JAVA变长参数的一些小知识
1.一个方法只能有一个可变长参数,且这个可变长参数必须是该方法的最后一个参数,java 不允许存在一个方法具备多个变长参数或者变长参数不是方法的最后位置的情况。
public class Demo {
public void print(String str, Integer... args) {}
public void print(String str, String... args) {}
}
Demo demo = new Demo();
demo.print("hello");
demo.print("hello", null);
上面代码直接编译报错,因为调用处对于两个方法都能匹配,编译器不知道选哪个,所以报错了,故别让 null 值和空值威胁到变长方法调用,对于上面调用部分来说修改如下即可运行:
Demo demo = new Demo();
String[] strs = null;
demo.print("hello", strs);
2. 同时这样写也会报错,因为变长参数本质是一个数组无论你传入什么编译器都会给你变成数组,所以不能再为这个类定义一个和转化后的方法签名一致的方法。
private static int sumUp(int... values) {
}
private static int sumUp(int[] values) {
}
3.注意!!!如果没有传参数,传递过去的是一个空数组,而不是null。这样就可以采取统一的形式来处理,而不必检测到底属于哪种情况。