Sobes.tech
Junior — Middle
115

Welke benaderingen kunnen worden gebruikt om uitzonderingen te voorkomen bij het gebruik van lazy objects?

Bedrijven waar gevraagd werd
СБЕР ТехСБЕР Тех

Antwoord van 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 при доступе.