數據類似乎是Java中老式POJO的替代品。可以預見的是,這些類將允許繼承,但我沒有看到擴展數據類的方便途徑。我需要的是這樣的:在Kotlin中擴展數據類
open data class Resource (var id: Long = 0, var location: String = "")
data class Book (var isbn: String) : Resource()
上面的代碼因爲碰撞component1()
方法失敗。僅在其中一個類中留下data
註解也不能完成這項工作。
也許還有另外一個習語來擴展數據類嗎?
UPD:我可能僅註釋子子類,但data
註釋只處理在構造函數中聲明的屬性。也就是說,我必須聲明所有父母的特性open
和覆蓋他們,這是醜陋:
open class Resource (open var id: Long = 0, open var location: String = "")
data class Book (
override var id: Long = 0,
override var location: String = "",
var isbn: String
) : Resource()
什麼組件1 ??? – maaartinus 2014-10-19 01:44:38
Kotlin隱式創建返回第N個屬性值的方法'componentN()'。請參閱[Multi-Declarations]上的文檔(http://kotlinlang.org/docs/reference/multi-declarations.html) – Dmitry 2014-10-20 09:27:24
要打開屬性,還可以使用Resource abstract或使用編譯器插件。 Kotlin對開放/封閉原則是嚴格的。 – 2017-11-06 08:12:03