我需要从数据类B继承数据类A,我知道在科特林
中这是不可行的 问题1:
为什么这不可行?
问题2:
与此类似的解决方案可能是什么?
示例
data class A(val data1 : String)
data class B(val data2 : String) : A()
我如何在Kotlin中实现这一目标?任何帮助
答案 0 :(得分:3)
当需要两个数据类时,唯一的解决方案是再创建一个抽象类,并从中派生这两个数据类。您需要注意,kotlin中的数据类基于主构造函数创建哈希码,equals和toString以及其他方法,这就是为什么您需要在数据类构造函数中重写Base类中的字段的原因。
abstract class Base(open val data1: String)
data class A(override val data1: String): Base(data1)
data class B(override val data1: String, val data2: String): Base(data1)
答案 1 :(得分:0)
您必须像下面这样
abstract class A(open val data1 : String) {}
data class B(val data2 : String) : A(data1)