Назад к вопросам
СБЕР Тех
Junior — Middle
77
Каким образом можно инициировать работу с ленивым экземпляром объекта?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Ленивая инициализация означает создание объекта только в момент первого обращения к нему. В Java это можно сделать несколькими способами:
- Использовать паттерн Lazy Holder:
public class MyClass {
private static class LazyHolder {
static final ExpensiveObject INSTANCE = new ExpensiveObject();
}
public static ExpensiveObject getInstance() {
return LazyHolder.INSTANCE;
}
}
-
Использовать
SupplierилиOptionalс отложенной инициализацией. -
В Java 8+ можно использовать
java.util.concurrent.atomic.AtomicReferenceс проверкой и созданием объекта при первом вызове.
Пример с Supplier:
Supplier<ExpensiveObject> lazy = () -> new ExpensiveObject();
ExpensiveObject obj = lazy.get(); // объект создаётся здесь
Таким образом, работа с ленивым экземпляром начинается с вызова метода или функции, которая создаёт объект при первом обращении.