Вопрос был озвучен на собеседовании:
void test(String s) {...}
void test(Object s) {...}
test(null);
Почему вызывается test(String s)?
Если вы перегружаете метод, то будет вызван тот метод, у которого типы аргументов наиболее близко совпадают с тем типом параметров, переданных при вызове.
Как определяется близость? По принципу от конкретного к более общему.
Рассмотрим ваш пример:
Есть метод принимающий String
, есть метод принимающий Object
. String
наследуется от Object
.
null
является String
? Да является, следовательно, выбирается метод принимающий параметр с данным типом.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Мое приложение должно фотографировать и выводить на экранСделал все как в примере здесь
Я пишу игру на Java, (с использованием движка Slick2D и библиотеки MarteEngine, если это важно), и реализуя свой UI столкнулся с появлением отступов слева...
Есть класс Animal и сабкласс Cat, хочу, чтоб Cat принимал имя и ограничение на максимальное расстояние для бега
собственно сабж, как из обычного класса использовать @Inject? как я понимаю для этого класс должен находится контексте или иными словами контекст...