java可变参数是指参数数量可以变化的参数,例如public void test(int...a),参数可以有0或者多个,在方法内部参数以数组来接收:
public void test(int...a){
int[] b = a;
}。
但是有个问题,如果添加一个名称相同,参数类型相同而且参数个数确定的方法会怎样呢?编译能通过吗?如果是重载的方式是会编译报错的。
我添加了一个方法:
public void test(int a){
}
并没有编译错误,说明可变参数的实现原理应该是用传递进来的参数,初始化一个数组再传递给方法使用。
分别调用test(1)、test(1,2),发现只传一个参数时调用的是第二个方法,说明会优先调用不包含可变参数的方法,毕竟固定参数的方法是固定的。