Sobes.tech
Middle

Wofür werden Datenklassen und versiegelte Klassen in Kotlin verwendet?

sobes.tech KI

Antwort von AI

Datenklassen erleichtern die Erstellung von Klassen, die nur zum Speichern von Daten bestimmt sind. Der Compiler generiert automatisch:

  • equals()
  • hashCode()
  • toString()
  • copy()
  • componentN() für Destrukturierung
Datenklasse User(val name: String, val age: Int)

// Verwendung
val user = User("Alice", 30)
println(user) // Gibt User(name=Alice, age=30) aus
val user2 = user.copy(age = 31)
val (name, age) = user // Destrukturierung

Versiegelte Klassen stellen eine eingeschränkte Klassenhierarchie dar, bei der alle möglichen Unterklassen zur Kompilierungszeit bekannt sind. Dies ermöglicht die Verwendung in when-Ausdrücken ohne else-Block, was eine vollständige Überprüfung aller Optionen garantiert.

versiegelte Klasse Result {
    Datenklasse Success(val data: String) : Result()
    Datenklasse Error(val message: String) : Result()
    Objekt Loading : Result() // Objekt, da keine Parameter
}

fun handleResult(result: Result) {
    when (result) {
        is Result.Success -> println("Erfolg: ${result.data}")
        is Result.Error -> println("Fehler: ${result.message}")
        Result.Loading -> println("Laden...")
    }
}

Vergleich:

Merkmal Datenklasse Versiegelte Klasse
Zweck Speicherung von Daten Eingeschränkte Klassenhierarchie
Fähigkeiten Automatische Generierung von Methoden Vollständige Überprüfung in when
Unterklassen Keine spezifische Einschränkung Müssen im selben Datei oder Modul sein
Verwendung Datenmodelle, DTOs Darstellung von Zuständen, Ereignissen, Varianten