在Kotlin的二传手重载

时间:2017-03-29 06:51:12

标签: kotlin setter

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

class Buffer(buf: String) {}

class Foo {
    var buffer: Buffer? = null
        set(value: String) {
            field = Buffer(value)
        }
}

我收到错误消息:

  

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

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

1 个答案:

答案 0 :(得分:3)

从Kotlin 1.1开始,不可能超载属性设置器。此处跟踪功能请求:

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

目前,您必须在buffer上定义String扩展功能:

val String.buffer : Buffer
    get() = Buffer(this) 

并使用

设置值
Foo().buffer = "123".buffer