数据类似乎是Java中老式POJO的替代品。这些类允许继承是非常可预期的,但我却找不到方便的方法来扩展数据类。我需要像这样的东西:
open data class Resource (var id: Long = 0, var location: String = "")
data class Book (var isbn: String) : Resource()
上面的代码出现问题是因为存在component1()
方法冲突。在一个类中仅保留一个类的data
注释也行不通。
也许有另一种习惯用法可以扩展数据类?
更新:我可能只能对子类进行注释,但是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 个属性的值。请参阅多重声明上的文档。 - Dmitry