Неоднозначная перегрузка с varargs
Я экспериментировал с перегрузкой метода и натолкнулся на этот загадочный сценарий:
class Dims {
void checkThis(long s) {System.out.println("long");}
void checkThis(int s) {System.out.println("int");}
void checkThis(long... s) {System.out.println("longs...");}
void checkThis(int... s) {System.out.println("ints...");}
public static void main(String[] args) {
Dims d = new Dims();
d.checkThis(45); // Prints int
d.checkThis(43,45); // Error: The method checkThis(long[]) is ambiguous for the type Dims
}
}
Компилятор выдает ошибку в последней строке, говоря, что он не может определить, какой метод вызывать, я не могу понять, почему? Пожалуйста помоги.