Код: Выделить всё
class HelloWorld {
public void method(Object a){
System.out.println("object");
}
public void method(int... a){
System.out.println("varargs");
}
public static void main(String[] args) {
HelloWorld h = new HelloWorld();
h.method(10);
}
}
Код: Выделить всё
class HelloWorld {
public void method(Object a){
System.out.println("object");
}
public void method(int... a){
System.out.println("varargs");
}
public static void main(String[] args) {
HelloWorld h = new HelloWorld();
h.method(null);
}
}
Для первого кода вызывается метод с аргументом Object, поскольку он может обрабатывать значение int и имеет больше предпочтений, чем varargs .Однако, когда я вызываю метод с нулевым значением, даже если объект может обрабатывать нулевое значение и имеет больше предпочтений, чем varargs, вызывается метод varargs.
Почему?
Этот вопрос отображается как дублирующийся, но в этом вопросе используются следующие методы: void метод(int a) и void метод(int... a). В этом случае вызывается varargs, поскольку int — это базовый тип, который не может иметь значение NULL. Но в моем вопросе метод принимает объекты, которые могут быть нулевыми. Так почему же он с этим не справляется.
Подробнее здесь: https://stackoverflow.com/questions/785 ... null-value