如何在Kotlin中正确扩展(继承)data class?可能的变通方法
大家好!我刚开始学习Kotlin,遇到了一个意想不到的问题。我需要为应用程序中的实体建模创建类层次结构。例如,有一个基类`User`,包含字段`id`和`email`,我想从中创建一个data class `AdminUser`,它添加了`role`字段。
我写了这样的代码:
```kotlin
data class User(val id: Long, val email: String)
data class AdminUser(val id: Long, val email: String, val role: String) : User(id, email)
```
但编译器报错:“data class may not inherit from a data class”。我查了一下,发现Kotlin中的data class不能继承自另一个data class,因为编译器无法为这种层次结构生成正确的`equals()`、`hashCode()`、`toString()`和`copy()`方法。
但该怎么办呢?我有几个具有公共字段的相似实体,想避免代码重复。我尝试过使用普通类,但失去了data class的优势(自动生成的equals、copy等)。