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