Sobes.tech
Middle

À quoi servent les classes de données et les classes scellées en Kotlin?

sobes.tech IA

Réponse de l'IA

Les classes de données facilitent la création de classes destinées uniquement au stockage de données. Le compilateur génère automatiquement pour elles :

  • equals()
  • hashCode()
  • toString()
  • copy()
  • componentN() pour la destructuration
classe de données User(val nom: String, val âge: Int)

// Utilisation
val user = User("Alice", 30)
println(user) // Affiche User(nom=Alice, âge=30)
val user2 = user.copy(âge = 31)
val (nom, âge) = user // Destructuration

Les classes scellées représentent une hiérarchie limitée de classes, où toutes les sous-classes possibles sont connues lors de la compilation. Cela permet de les utiliser dans des expressions when sans bloc else, garantissant une vérification exhaustive de toutes les options.

classe scellée Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
    object Loading : Result() // Objet, car sans paramètres
}

fun handleResult(result: Result) {
    when (result) {
        is Result.Success -> println("Succès : ${result.data}")
        is Result.Error -> println("Erreur : ${result.message}")
        Result.Loading -> println("Chargement...")
    }
}

Comparaison :

Caractéristique Classe de données Classe scellée
But Stockage de données Hiérarchie limitée de classes
Capacités Génération automatique de méthodes Vérification exhaustive dans when
Sous-classes Pas de restriction spécifique Doivent être dans le même fichier ou module
Utilisation Modèles de données, DTOs Représentation d'états, d'événements, d'options