当尝试定义一个接受可用于构造属性的参数类型的setter时,因此:
class Buffer(buf: String) {}
class Foo {
var buffer: Buffer? = null
set(value: String) {
field = Buffer(value)
}
}
我收到错误消息:
Setter参数类型必须等于属性的类型
那么Kotlin的做法是什么意思?
答案 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