Перегрузка сеттера в Котлине

при попытке определить сеттер, который принимает тип параметра, который может использоваться для создания свойства, таким образом:

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