2017-10-17 132 views
-2

我是Kotlin新人 我有一个班人(姓名)和(年龄)属性。 我如何设置Person类的扩展属性一样,扩展属性Kotlin

var Person.phone: Int 
    get() = this.phone 
    set(value) {this.phone = value} 

我怎么能在这种情况下使用二传手? 谢谢。

+1

如果我正确地理解了这个问题,你想拥有一个带有后台字段的扩展属性。这是不可能的,因为扩展不会修改类。但是,您可以尝试使用委托模拟此行为,请参阅[我对该问题的回答](https://stackoverflow.com/a/36511438/2196460),我将其链接为重复项。 – hotkey

+0

但是我怎样才能使用setter方法? – FinalDest

+0

啊,只需将值分配到属性:'person.phone = 12345' – hotkey

回答

0

不确定Kotlin可以在这里完成你想要的。

docs

需要注意的是,由于扩展实际上并不插入成员到 类,有一个扩展属性有 支持字段没有有效的方法。这就是为什么初始化器不允许扩展 属性。他们的行为只能通过明确提供 获取者/设置者来定义。

既然你不能为你的属性添加一个后台字段,你不能真正用这种方式将已存储数据的那一点添加到现有类中。

您可能需要扩展Person以添加更多内容。