Sobes.tech
Back to questions
Junior — Middle
55

Каким образом класс Optional помогает предотвращать появление NullPointerException в коде?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

Класс Optional в Java служит контейнером, который может содержать либо значение, либо быть пустым (null). Использование Optional помогает явно указать, что значение может отсутствовать, что заставляет разработчика обрабатывать этот случай явно, а не получать неожиданное NullPointerException.

Например, вместо возвращения null из метода, можно вернуть Optional.empty(), а при наличии значения — Optional.of(value). Это позволяет использовать методы isPresent(), orElse(), ifPresent() и другие для безопасной работы с возможным отсутствием значения.

Пример:

Optional<String> getName(boolean hasName) {
    if (hasName) {
        return Optional.of("Иван");
    } else {
        return Optional.empty();
    }
}

Optional<String> name = getName(false);
name.ifPresent(n -> System.out.println(n)); // ничего не выведет, не вызовет NPE
String defaultName = name.orElse("Гость");
System.out.println(defaultName); // выведет "Гость"

Таким образом, Optional заставляет явно обрабатывать отсутствие значения, снижая риск возникновения NullPointerException.