在Kotlin的二传手重载

Bas*_*ani 6 setter kotlin

在尝试定义接受可用于构造属性的参数类型的setter时,因此:

class Buffer(buf: String) {}

class Foo {
    var buffer: Buffer? = null
        set(value: String) {
            field = Buffer(value)
        }
}
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

Setter参数类型必须等于属性的类型

那么Kotlin的做法是什么意思呢?

Ing*_*gel 5

从 Kotlin 1.1 开始,无法重载属性设置器。功能请求在此处跟踪:

https://youtrack.jetbrains.com/issue/KT-4075

目前,您必须在 上定义buffer扩展函数String

val String.buffer : Buffer
    get() = Buffer(this) 
Run Code Online (Sandbox Code Playgroud)

并设置值

Foo().buffer = "123".buffer
Run Code Online (Sandbox Code Playgroud)