2017-10-17 217 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以添加更多內容。