Avatar ·

Como estender (herdar) corretamente uma data class em Kotlin? Possíveis soluções alternativas

Olá a todos! Comecei a estudar Kotlin recentemente e me deparei com um problema inesperado. Preciso criar uma hierarquia de classes para modelar entidades em uma aplicação. Por exemplo, existe uma classe base `User` com campos `id` e `email`, e quero criar uma data class `AdminUser` que adiciona o campo `role`. Escrevi o seguinte código: ```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) ``` Mas o compilador retorna um erro: "data class may not inherit from a data class". Pesquisei e entendi que uma data class em Kotlin não pode herdar de outra data class, porque o compilador não consegue gerar corretamente os métodos `equals()`, `hashCode()`, `toString()` e `copy()` para essa hierarquia. Mas o que fazer? Tenho várias entidades semelhantes com campos comuns e quero evitar duplicação de código. Tentei usar classes normais, mas perco as vantagens das data classes (equals automático, copy, etc.)