Ответ
Lazy в Kotlin — это делегат для отложенной инициализации свойства. Значение вычисляется только при первом обращении и затем кэшируется. Полезно для ресурсоемких операций или когда свойство может не использоваться.
val heavyObject: HeavyClass by lazy {
HeavyClass() // Создается только при первом вызове
}
Особенности:
- По умолчанию потокобезопасный (
LazyThreadSafetyMode.SYNCHRONIZED) - Можно указать режим (
PUBLICATION,NONEдля однопоточной среды) - Нельзя использовать с
var(толькоval)