Kelas data tampaknya menjadi pengganti POJO kuno di Jawa. Sangat diharapkan bahwa kelas-kelas ini akan memungkinkan untuk warisan, tetapi saya tidak bisa melihat cara yang nyaman untuk memperluas kelas data. Yang saya butuhkan adalah sesuatu seperti ini:
open data class Resource (var id: Long = 0, var location: String = "")
data class Book (var isbn: String) : Resource()
Kode di atas gagal karena component1()
metode bentrok . Meninggalkan data
anotasi hanya di satu kelas tidak akan berfungsi juga.
Mungkin ada idiom lain untuk memperpanjang kelas data?
UPD: Saya mungkin memberi anotasi hanya kelas anak anak, tetapi data
anotasi hanya menangani properti yang dideklarasikan di konstruktor. Yaitu, saya harus mendeklarasikan semua properti orangtua open
dan menimpanya, yang jelek:
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()
yang mengembalikan nilai properti N-th. Lihat dokumen Multi-Deklarasi