Sobes.tech
Junior — Middle

Dans quels cas est-il préférable d'utiliser une classe scellée plutôt qu'une enum en Kotlin?

sobes.tech IA

Réponse de l'IA

Une classe scellée en Kotlin est préférée à enum lorsque vous devez décrire un ensemble limité de types avec des structures de données et des comportements différents, et pas simplement un ensemble de constantes.

Différences et quand utiliser une classe scellée :

  • Données différentes pour les variantes : Dans enum, tous les éléments sont des constantes du même type, tandis qu'une classe scellée permet à chaque sous-classe d'avoir ses propres propriétés et méthodes.
  • Héritage et extensibilité : La classe scellée est une classe de base avec un nombre limité d'héritiers, ce qui est utile pour exprimer des hiérarchies.
  • Utilisation dans when : Le compilateur vérifie l'exhaustivité du when pour une classe scellée, ce qui augmente la sécurité.

Exemple de classe scellée :

sealed class Résultat {
    data class Succès(val données: String) : Résultat()
    data class Erreur(val erreur: Throwable) : Résultat()
    object Chargement : Résultat()
}

fun gérerRésultat(résultat: Résultat) {
    when(résultat) {
        is Résultat.Succès -> println("Données : ${résultat.données}")
        is Résultat.Erreur -> println("Erreur : ${résultat.erreur.message}")
        Résultat.Chargement -> println("Chargement...")
    }
}

Si vous avez juste besoin d'une énumération de constantes fixes sans données, enum sera plus simple et efficace.