Какой метод будет вызван?

148
14 декабря 2018, 23:30

Вопрос был озвучен на собеседовании:

void test(String s) {...}
void test(Object s) {...}
test(null);

Почему вызывается test(String s)?

Answer 1

Если вы перегружаете метод, то будет вызван тот метод, у которого типы аргументов наиболее близко совпадают с тем типом параметров, переданных при вызове.

Как определяется близость? По принципу от конкретного к более общему.

Рассмотрим ваш пример:
Есть метод принимающий String, есть метод принимающий Object. String наследуется от Object.
null является String? Да является, следовательно, выбирается метод принимающий параметр с данным типом.

READ ALSO
Android Camera не выводит в image view

Android Camera не выводит в image view

Мое приложение должно фотографировать и выводить на экранСделал все как в примере здесь

109
Как убрать отступы от краев экрана кустарного UI в зависимости от разрешения?

Как убрать отступы от краев экрана кустарного UI в зависимости от разрешения?

Я пишу игру на Java, (с использованием движка Slick2D и библиотеки MarteEngine, если это важно), и реализуя свой UI столкнулся с появлением отступов слева...

132
Проблема с наследованием и методами

Проблема с наследованием и методами

Есть класс Animal и сабкласс Cat, хочу, чтоб Cat принимал имя и ограничение на максимальное расстояние для бега

154
как включить обычный класс в DI

как включить обычный класс в DI

собственно сабж, как из обычного класса использовать @Inject? как я понимаю для этого класс должен находится контексте или иными словами контекст...

137