データ クラスは、Java の旧式の POJO に取って代わるようです。これらのクラスで継承が可能になることは十分に予想できますが、データ クラスを拡張する便利な方法は見当たりません。私が必要とするのは次のようなものです:
open data class Resource (var id: Long = 0, var location: String = "")
data class Book (var isbn: String) : Resource()
上記のコードは、component1()
メソッドの衝突のために失敗します。クラスの1つだけに注釈を残し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()