Sobes.tech
Junior — Middle
121

Кои подходи могат да се използват, за да се избегнат изключения при използване на лениви обекти?

Компаниите бяха попитани
СБЕР ТехСБЕР Тех

Отговор от AI

sobes.tech AI

Чтобы избежать исключений при работе с ленивыми объектами (lazy initialization) в Java, можно использовать следующие подходы:

  • Использовать класс Optional для безопасной работы с возможным отсутствующим значением.
  • Применять потокобезопасные ленивые инициализации, например, через synchronized блоки или java.util.concurrent.atomic.AtomicReference.
  • Использовать встроенный механизм ленивой инициализации через Lazy<T> (в Java 8+ можно использовать Supplier<T> с мемоизацией).
  • Проверять объект на null перед использованием.

Пример безопасной ленивой инициализации с использованием synchronized:

public class LazyExample {
    private volatile ExpensiveObject instance;

    public ExpensiveObject getInstance() {
        if (instance == null) {
            synchronized(this) {
                if (instance == null) {
                    instance = new ExpensiveObject();
                }
            }
        }
        return instance;
    }
}

Такой подход предотвращает создание объекта несколько раз и исключает NullPointerException при доступе.