Sobes.tech
Middle

Comment utiliser les classes scellées pour modéliser des hiérarchies en Kotlin?

sobes.tech IA

Réponse de l'IA

Les classes scellées (sealed classes) sont utilisées pour représenter des hiérarchies d'héritage limitées, où tous les sous-types possibles sont connus au moment de la compilation.

Caractéristiques principales :

  • Tous les sous-types directs doivent se trouver dans le même fichier que la classe scellée (avant Kotlin 1.5). À partir de Kotlin 1.5, ils peuvent être dans n'importe quel fichier de la même compilation.
  • Les sous-types d'une classe scellée peuvent être des classes normales, des data-classes, des déclarations object ou d'autres classes scellées.
  • Le constructeur de la classe scellée est privé par défaut ; d'autres modificateurs (public, protected, internal) ne sont pas autorisés.
  • Permettent d'utiliser une analyse exhaustive (exhaustive) dans les expressions when, ce qui garantit la gestion de toutes les options possibles et élimine la nécessité d'une branche else.

Exemple d'utilisation pour modéliser l'état d'une interface utilisateur :

sealed class UiState {
    object Loading : UiState() // État de chargement
    data class Success(val data: String) : UiState() // Données chargées avec succès
    data class Error(val message: String) : UiState() // Erreur
}

Utilisation dans une expression when :

fun handleUiState(state: UiState): String {
    return when (state) {
        UiState.Loading -> "Chargement des données..."
        is UiState.Success -> "Données chargées avec succès : ${state.data}"
        is UiState.Error -> "Erreur : ${state.message}"
    }
}

Avantages :

  • Sécurité de type : le compilateur vérifie que tous les sous-types possibles sont traités.
  • Lisibilité : montre clairement quelles variantes de données ou états peuvent exister.
  • Commodité : simplifie le travail avec les expressions when.