我试图弄清楚可变参数的来龙去脉并编写了以下代码
public class VarArgTest {
/**
* @param args
*/
public static void main(String[] args) {
VarArgTest v = new VarArgTest();
//Code 1
System.out.println("haha");
}
public void m1(Integer a, Integer... ints) {
System.out.println("1");
}
public void m1(Integer... ints) {
System.out.println("2");
}
}
现在,如果我将代码 1 替换为
v.m1(new Integer(1), new Integer(2));
我收到以下消息
The method m1(Integer, Integer[]) is ambiguous for the type VarArgTest
我的问题是,为什么在客户端代码中抛出错误?在定义两个 m1 方法时不应该被编译器捕获吗?