Можем ли мы передать test (null) в void display (Object o) // test - это объект класса - PullRequest
0 голосов
/ 16 июня 2019

Почему null идет в метод, который принимает строку

class Test {
    public static void test(String s)
    {
        System.out.println("In String");
    }
    public static void test(Object o) {
        System.out.println("In Object");
    }

    public static void main(String args[]) {
        test(null);
    }
}

Я ожидаю, что результат будет в объекте, так как строки обычно передаются в ("")

Ответы [ 2 ]

1 голос
/ 16 июня 2019

Java всегда будет пытаться вызвать наиболее конкретную версию метода.Это часть спецификации языка Java.

Проверьте этот ответ для получения более подробной информации и ссылки на JLS: https://stackoverflow.com/a/5229890/1426538

0 голосов
/ 17 июня 2019

См. JLS § 15.12.2 .

Если более одного метода-члена доступны и применимы к вызову метода, необходимо выбрать один для предоставлениядескриптор для отправки метода во время выполнения.Язык программирования Java использует правило выбора наиболее конкретного метода.

Неформальная интуиция заключается в том, что один метод более специфичен, чем другой, если любой вызов, обработанный первым методом, может быть передан другому безошибка типа во время компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...