安装员在Kotlin超载

当试图定义一个接受可以用来构造一个属性的参数类型的setter时,

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

我收到错误消息:

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

那么Kotlin的做法是什么?

从Kotlin 1.1开始,不可能超载属性设置器。 功能请求在这里被跟踪:

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

目前,你将不得不在String上定义一个buffer扩展函数:

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

并设置值

 Foo().buffer = "123".buffer