Я очень удивлен, почему вывод сильно отличается от ожидаемого, у меня есть два перегруженных метода, один из которых имеет одну строку, а другой - как объект, а при вызове этого метода с null параметр, вывод только печать "String"
и не вызывающий способ имеющий объект как параметр.Неожиданный выбор компилятора метода перегрузки с нулевым параметром
Почему Java выбирает метод с параметром String as, как java определяет, какой перегруженный метод нужно вызвать?
class TestingClass {
public void test(String s) {
System.out.println("String");
}
public void test(Object o) {
System.out.println("Object");
}
public static void main(String[] args) {
TestingClass q = new TestingClass();
q.test(null);
}
}
Повторите это после меня. Переопределение происходит только в производных классах, и это тоже, только если параметры метода одинаковы. Тип возврата допускается ковариантным. – Madhusudhan
Более подробный текст, объясняющий, что сказал Эран. [Ищите ответ Дениса] (http://stackoverflow.com/questions/1572322/overloaded-method-selection-based-on-the-parameters-real-type) –