Avatar ·

Comment étendre (hériter) correctement une data class en Kotlin ? Solutions de contournement possibles

Bonjour à tous ! Je viens de commencer à apprendre Kotlin et j'ai rencontré un problème inattendu. J'ai besoin de créer une hiérarchie de classes pour modéliser des entités dans une application. Par exemple, il y a une classe de base `User` avec les champs `id` et `email`, et je veux en faire une data class `AdminUser` qui ajoute le champ `role`. J'ai écrit ce code : ```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) ``` Mais le compilateur donne une erreur : "data class may not inherit from a data class". J'ai cherché sur Google et j'ai compris qu'une data class en Kotlin ne peut pas hériter d'une autre data class, car le compilateur ne peut pas générer correctement les méthodes `equals()`, `hashCode()`, `toString()` et `copy()` pour une telle hiérarchie. Mais que faire ? J'ai plusieurs entités similaires avec des champs communs, et je veux éviter la duplication de code. J'ai essayé d'utiliser des classes normales, mais je perds les avantages de la data class (equals automatique, copy, etc.)