数据类似乎可以替代Java中的老式POJO。这些类将允许继承,这是非常可预期的,但是我看不到扩展数据类的便捷方法。我需要的是这样的:

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()

最佳答案

事实是:数据类不能很好地继承。我们正在考虑禁止或严格限制数据类的继承。例如,已知无法在非抽象类的层次结构中正确实现equals()

因此,我所能提供的就是:不要对数据类使用继承。

09-30 17:59
查看更多