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 |