Назад к вопросам
СБЕР Тех
Junior — Middle
65
Какие подходы можно использовать, чтобы избежать возникновения исключений при использовании ленивых объектов?
Компании, где спрашивали
Ответ от нейросети
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 при доступе.