Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
10 Июл 2023
2 мин
38

Использование Optional в геттерах Java 8

В Java 8 был внедрен новый тип Optional, который может вызвать затруднения у некоторых разработчиков. Суть Optional заключается в том, что он может содержать

В Java 8 был внедрен новый тип Optional, который может вызвать затруднения у некоторых разработчиков. Суть Optional заключается в том, что он может содержать либо объект, либо пустоту.

Пример классической реализации геттера:

public class Foo {
    private Bar bar;

    public Bar getBar() {
        return bar;
    }
}

В этом случае, если bar не инициализирован, то getBar() вернет null. Это может привести к NullPointerException, если не предусмотрена обработка этого случая.

Использование Optional может показаться хорошим решением этой проблемы. Геттер с Optional будет выглядеть следующим образом:

public class Foo {
    private Bar bar;

    public Optional<Bar> getBar() {
        return Optional.ofNullable(bar);
    }
}

В этом случае, если bar не инициализирован, то getBar() вернет Optional.empty(), что поможет избежать NullPointerException.

Однако, использование Optional в геттерах не всегда является наилучшей практикой. Во-первых, это делает код более громоздким и сложным для чтения. Во-вторых, Optional предназначен для использования в качестве возвращаемого типа для методов, которые могут не возвращать результат, а не в качестве защиты от null.

К тому же, использование Optional не избавляет от проверки на отсутствие значения, так как перед использованием объекта необходимо проверить, что Optional не пуст.

Вывод следующий: использование Optional в геттерах — это вопрос стиля и предпочтений команды. Если null является допустимым значением для поля и это явное поведение, то использование Optional может быть оправдано. В противном случае, лучше придерживаться классического подхода и обрабатывать null там, где это необходимо.

Добавить комментарий

Подарок
Забрать подарок