为什么在编译时不会将此声明视为含糊不清?
void f(int a) {
System.out.println("int");
}
void f(int... a) {
System.out.println("int...");
}
e.g:
f(2); // to one parameter both method should match (f(int) runs)
f(2,2); // f(int...)
答案 0 :(得分:3)
我认为幕后的var-args声明实际上是由编译器转换成数组的。所以var-args作为参数的方法实际上如下所示:
void f(int[] a) {
System.out.println("int...");
}
答案 1 :(得分:0)
void f(int... a) {
System.out.println("int...");
}
上述方法可以接受一个或多个值,并且该方法只包含一个参数,即
void f(int a) {
System.out.println("int");
} 也可以接受一个值。