Sobes.tech
Junior — Middle
103

Кадом усулҳоро метавон истифода бурд, ки аз рух додани истисноҳо ҳангоми истифодаи объектҳои сустӣ пешгирӣ кунанд?

Ширкатҳо дар куҷо пурсиданд
СБЕР ТехСБЕР Тех

Ҷавоб аз 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 при доступе.