Sobes.tech
Назад к вопросам
Junior — Middle
73

Можешь назвать типы делегатов, используемых в Kotlin?

Компании, где спрашивали
Ubic

Ответ от нейросети

sobes.tech AI

В Kotlin существуют несколько типов делегатов, которые упрощают работу с свойствами:

  • Стандартные делегаты:

    • lazy — отложенная инициализация свойства при первом обращении.
    • observable — позволяет отслеживать изменения значения свойства.
    • vetoable — похож на observable, но с возможностью отклонить изменение.
    • notNull — свойство, которое должно быть инициализировано до первого доступа, иначе бросается исключение.
  • Делегаты для коллекций: например, делегаты для хранения значений в Map.

  • Пользовательские делегаты: можно реализовать интерфейс ReadOnlyProperty или ReadWriteProperty для создания собственных делегатов.

Пример использования lazy:

val lazyValue: String by lazy {
    println("Вычисление значения")
    "Привет"
}

fun main() {
    println(lazyValue) // Значение вычислится здесь
    println(lazyValue) // Используется кешированное значение
}