在尝试定义接受可用于构造属性的参数类型的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的做法是什么意思呢?
从 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)
| 归档时间: |
|
| 查看次数: |
1186 次 |
| 最近记录: |