Вопрос проверяет понимание обработки null-значений в Java, что критически важно для предотвращения NullPointerException и написания надёжного кода.
В Java null — это литерал, который может быть присвоен любой ссылочной переменной для обозначения того, что она не ссылается ни на какой объект. Прямой доступ к полям или методам такой переменной вызывает исключение NullPointerException (NPE), которое является одной из самых частых ошибок времени выполнения.
if (user != null) {
String name = user.getName();
}null, весь выражение возвращает null.String cityName = user?.getAddress()?.getCity(); // Возвращает null, если user или address nullnull.Optional<String> optionalName = Optional.ofNullable(getName());
String result = optionalName.orElse("default");Явные проверки подходят для простых случаев в старом коде. Optional рекомендуется использовать в качестве возвращаемого типа методов, где значение может отсутствовать, — это делает контракт метода более явным. Оператор ?. идеален для безопасного навигирования по графу объектов (например, при разборе данных из внешнего API).
Рассмотрим метод, который безопасно получает почтовый индекс пользователя.
public String getZipCode(User user) {
// Используем Optional и цепочку безопасных вызовов
return Optional.ofNullable(user)
.map(User::getAddress)
.map(Address::getZipCode)
.orElse("000000"); // Значение по умолчанию
}Этот код не выбросит NPE, даже если user или address равны null.
Вывод: Обработка null — обязательная часть разработки на Java. Для нового кода предпочтительно использовать Optional в сигнатурах методов и оператор ?. для безопасных вызовов, что делает код чище и менее подверженным ошибкам. Явные проверки остаются актуальными в legacy-проектах и для простых случаев.