Перегрузка сеттера в Котлине
при попытке определить сеттер, который принимает тип параметра, который может использоваться для создания свойства, таким образом:
class Buffer(buf: String) {}
class Foo {
var buffer: Buffer? = null
set(value: String) {
field = Buffer(value)
}
}
Я получаю сообщение об ошибке:
тип параметра Setter должен быть равен типу свойства
Итак, что означает способ Котлина сделать это?
1 ответов
начиная с Kotlin 1.1 невозможно перегрузить задатчики свойств. Запрос функции отслеживается здесь:
https://youtrack.jetbrains.com/issue/KT-4075
В настоящее время вам нужно будет определить buffer
функции расширения на String
:
val String.buffer : Buffer
get() = Buffer(this)
и установите значение с помощью
Foo().buffer = "123".buffer