Если я объявлю только 2 метода varargs следующим образом:
public void foo(String... strings) {
System.out.println("Foo with Strings");
}
и
public void foo(int... ints) {
System.out.println("Foo with ints");
}
и затем иметь код:
foo();
это ошибка компилятора из-за неопределенности, как и ожидалось.
Однако, если у меня есть только следующие 2 версии foo:
public void foo(Object... objects) {
System.out.println("Foo with Objects");
}
и
public void foo(int... ints) {
System.out.println("Foo with ints");
}
тогда код
foo();
вызывает целочисленную версию метода. Может кто-нибудь объяснить, почему второй пример не так неоднозначно и почему он разрешается в методе int над методом Object. Спасибо.