inheritance - 在 Kotlin 中扩展数据类

数据类似乎是 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()

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

https://stackoverflow.com/questions/26444145/

相关文章:

random - 如何在 Kotlin 中获取随机数?

android-studio - Unresolved reference : kotlinx

asynchronous - Kotlin协程中的launch/join和async/await有什

kotlin - bool 值的使用?在 if 表达式中

design-patterns - 如何在 Kotlin 中实现 Builder 模式?

kotlin - 在 Kotlin 中试用资源

java - Java 的 String[] 的 Kotlin 等价物是什么?

dictionary - 如何在 Kotlin 中将列表转换为 map ?

hibernate - 带有 JPA : default constructor hell 的 Ko

kotlin - 什么是 Kotlin 双键 (!!) 运算符?