Назад к вопросам
Middle
68
questionbank
Какие типы делегатов существуют в Kotlin?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
-
Делегаты свойств (Property Delegates): Позволяют переиспользовать общую логику получения/установки значений свойств. Примеры:
lazy: Ленивая инициализация свойства.observable: Уведомляет об изменении значения свойства.vetoable: Позволяет отменить изменение значения свойства.- Свойства, хранящиеся в Map.
// Ленивая инициализация val lazyValue: String by lazy { println("Вычисление lazyValue...") "Привет" } // Observable свойство var name: String by Delegates.observable("initial value") { prop, old, new -> println("$old -> $new") } -
Делегаты интерфейсов (Delegating Implementation): Позволяют передать реализацию интерфейса другому объекту. Это паттерн "декоратор".
interface Base { fun print() } class BaseImpl(val x: Int) : Base { override fun print() { print(x) } } class Derived(b: Base) : Base by b // Делегирование реализации интерфейса Base