Делегаты в Kotlin — мощный инструмент, который позволяет переопределить поведение геттера/сеттера, вынести повторяющуюся логику, и писать более декларативный, читаемый код.
Делегирование свойства — это когда мы передаём логику get()
и set()
специальному объекту.
В Kotlin это делается с помощью ключевого слова by
.
Какие бывают делегаты в Kotlin?
Делегат | Назначение |
---|---|
lazy { ... } | Вычисляется один раз при первом обращении, ленивая инициализация |
observable { _, old, new -> } | Коллбек при каждом изменении значения |
vetoable { _, old, new -> ... } | Можно запретить изменение, возвращая true/false |
Delegates.notNull<T>() | Обязательная инициализация до первого доступа |
by map | Делегирование значений из Map по ключам (например, JSON/Bundle/Map) |
by another object | Делегирование методов целиком (интерфейсное делегирование) |