Можно создать дубликат:
Overloaded method selection based on the parameter’s real type
How is an overloaded method choosen when a parameter is the literal null value?Объекта против Метод Строки
Когда я выполняю код ниже, я получаю следующий результат:
Метод с строкой аргумент «...
Почему?
public class StringObjectPOC {
public static void test(Object o) {
System.out.println("Method with Object argument Called ...");
}
public static void test(String str){
System.out.println("Method with String argument Called ...");
}
public static void main(String[] args) {
StringObjectPOC.test(null);
}
}
Таким образом, вы перегруженный метод «тест», и вы назвали его со строкой, но вы хотите знать, почему объект не так дозвонились? – JoshRagem
Просто потому, что класс 'String' является специализированной формой класса' Object' (из-за того, что в классе 'String' есть каждая особенность класса' Object' в дополнение к его собственному), который выбирается компилятор, как указано JLS (выбран самый специфический метод, который находится в вашем случае, тот, который принимает параметр типа 'String'). – Lion
Это также аналогичные темы, которые вы можете захотеть ссылаться на [Как перегруженный метод выбирается, когда параметр является буквальным нулевым значением?] (Http://stackoverflow.com/q/13033037/1037210), [Использование null методы перегрузки в Java] (http://stackoverflow.com/q/13041042/1037210) – Lion