Получить доступ

Что произойдёт при выполнении: Integer x = null; int y = x;?

JuniorОсновы языка
Коротко

NullPointerException: int y = x компилируется в x.intValue(), а вызов метода на null — NPE. Обёртка может быть null, примитив — нет.

  • Типичный источник: map.get(key), поля сущностей Integer, результаты JDBC
  • Защита: getOrDefault, Objects.requireNonNullElse, примитив там, где «нет значения» бессмысленно
  • Сообщение NPE в Java 14+ подскажет: Cannot invoke "Integer.intValue()"

А ещё Сравнение Integer с int через == тоже распаковывает

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Попробуйте сами

Песочница: == против equals и кэш Integer

Подробно

int y = x компилируется в x.intValue(), а вызов метода на null даёт NullPointerException. Типичный источник — результаты, способные вернуть null (map.get(key)), присвоенные примитиву. Защита: использовать примитив там, где «отсутствие» бессмысленно; подставлять дефолт через getOrDefault / Objects.requireNonNullElse; для «значение может отсутствовать» возвращать Optional, а не nullable-обёртку.

Что хотят услышать

  • Механизм распаковки.
  • Где встречается и как защититься.

Частые ошибки

  • Ждать дефолт 0 при распаковке null.
  • Присваивать map.get(key) переменной int без проверки на null.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓NullPointerException при распаковке null-обёртки в примитив
  • ✗y станет 0 — значение по умолчанию для int
  • ✗Не скомпилируется: нельзя присвоить null переменной Integer
  • ✗y станет null

Что спросят дальше

  • Как getOrDefault убирает этот NPE?
  • Где уместен примитив, а где обёртка в полях класса?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем