Какие параметры получает оператор setValue у делегата

«Какие параметры получает оператор setValue у делегата» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

setValue у делегата принимает три параметра:

  1. thisRef – ссылка на объект, в котором свойство объявлено (может быть null для extension-свойств)
  2. property – метаданные свойства (тип KProperty<*>)
  3. value – новое значение свойства (тип соответствует объявленному)

Пример:

var token: String by Delegates.observable("") { _, property, newValue ->
    println("${property.name} changed to $newValue")
}

При присваивании token = "abc" делегат вызовет setValue с newValue = "abc".