Sobes.tech
Junior — Middle

In welchen Fällen ist es vorzuziehen, eine sealed class anstelle eines Enums in Kotlin zu verwenden?

sobes.tech KI

Antwort von AI

In Kotlin ist die sealed class einer enum vorzuziehen, wenn Sie eine begrenzte Menge von Typen mit unterschiedlichen Datenstrukturen und Verhaltensweisen beschreiben müssen, und nicht nur eine Reihe von Konstanten.

Unterschiede und wann man eine sealed class verwendet:

  • Verschiedene Daten bei den Varianten: Bei enum sind alle Elemente Konstanten desselben Typs, während die sealed class es ermöglicht, dass jede Unterklasse ihre eigenen Eigenschaften und Methoden hat.
  • Vererbung und Erweiterbarkeit: Die sealed class ist eine Basisklasse mit einer begrenzten Anzahl von Erben, was nützlich ist, um Hierarchien auszudrücken.
  • Verwendung in when: Der Compiler überprüft die Vollständigkeit von when für eine sealed class, was die Sicherheit erhöht.

Beispiel einer sealed class:

sealed class Ergebnis {
    data class Erfolg(val daten: String) : Ergebnis()
    data class Fehler(val fehler: Throwable) : Ergebnis()
    object Laden : Ergebnis()
}

fun verarbeiteErgebnis(ergebnis: Ergebnis) {
    when(ergebnis) {
        is Ergebnis.Erfolg -> println("Daten: ${ergebnis.daten}")
        is Ergebnis.Fehler -> println("Fehler: ${ergebnis.fehler.message}")
        Ergebnis.Laden -> println("Lädt...")
    }
}

Wenn Sie nur eine Aufzählung fester Konstanten ohne Daten benötigen, ist enum einfacher und effizienter.