データクラスは、Javaの昔ながらのPOJOに取って代わるようです。これらのクラスが継承を可能にすることはかなり期待できますが、データクラスを拡張する便利な方法はありません。私が必要なのはこのようなものです:
open data class Resource (var id: Long = 0, var location: String = "")
data class Book (var isbn: String) : Resource()
上記のコードは、component1()
メソッドの衝突により失敗します。data
アノテーションを1つのクラスだけに残しても、機能しません。
おそらく、データクラスを拡張する別のイディオムがありますか?
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()
componentN()
は、N番目のプロパティの値を返すメソッドを暗黙的に作成します。マルチ宣言の