Junior — Middle
120
Koji pristupi se mogu koristiti za izbegavanje izuzetaka pri korišćenju lenjih objekata?
Компаније где су питане
Одговор од АИ
sobes.tech АИ
Чтобы избежать исключений при работе с ленивыми объектами (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 при доступе.