Kotlin: видимый делегат свойства nullable
В Котлине мы можем определить наблюдаемое для непустого свойства,
var name: String by Delegates.observable("<no name>") {
prop, old, new ->
println("$old -> $new")
}
однако это невозможно
var name: String? by Delegates.observable("<no name>") {
prop, old, new ->
println("$old -> $new")
}
Каким образом можно определить наблюдаемое свойство nullable?
Изменить: это ошибка компиляции
Property delegate must have a 'setValue(DataEntryRepositoryImpl, KProperty<*>, String?)' method. None of the following functions is suitable:
public abstract operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String): Unit defined in kotlin.properties.ReadWriteProperty
Ответы
Ответ 1
По какой-то причине вывод типа не выполняется. Вы должны указать тип делегата вручную. Вместо этого вы можете опустить объявление типа свойства:
var name by Delegates.observable<String?>("<no name>") {
prop, old, new ->
println("$old -> $new")
}
Пожалуйста, укажите проблему на https://youtrack.jetbrains.com/issues/KT