0Pricing
Kotlin Academy · Lektion

Grundlagen von Data Classes: automatisch generierte Methoden

Verstehen Sie, was data class generiert: equals, hashCode, toString und copy.

Grundlagen von Data Classes: automatisch generierte Methoden ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist eine Data Class?

Eine data class ist eine Klasse, deren Hauptzweck darin besteht, Werte zu speichern. Der Kotlin-Compiler generiert automatisch die Funktionen equals, hashCode, toString, copy und componentN für Sie.

Eine Data Class deklarieren

Stellen Sie einer regulären Klasse data voran. Alle Parameter des primären Konstruktors müssen val oder var sein.

data class User(val name: String, val age: Int)
fun main() {
    val u = User("Ada", 35)
    println(u)
}

Automatisch generiertes toString

Der Compiler erstellt ein toString, das jede Eigenschaft mit ihrem Namen auflistet.

data class Point(val x: Int, val y: Int)
fun main() {
    println(Point(3, 5)) // Point(x=3, y=5)
}

Automatisch generiertes equals

equals vergleicht alle Eigenschaftswerte – zwei Instanzen mit denselben Feldern sind unabhängig von ihrer Referenzidentität gleich.

data class Coord(val lat: Double, val lng: Double)
fun main() {
    val a = Coord(41.0, 29.0)
    val b = Coord(41.0, 29.0)
    println(a == b)      // true (structural)
    println(a === b)     // false (reference)
}

Automatisch generiertes hashCode

hashCode ist mit equals konsistent: Gleiche Objekte erzeugen gleiche Hashwerte. Dadurch funktionieren Data Classes korrekt in Mengen und als Map-Schlüssel.

data class Key(val id: Int, val tag: String)
fun main() {
    val map = mapOf(Key(1, "a") to "one")
    println(map[Key(1, "a")]) // one
}

Automatisch generiertes copy

copy() erstellt eine neue Instanz mit denselben Feldwerten und ermöglicht das Überschreiben einzelner Felder über benannte Argumente.

data class Config(val host: String, val port: Int, val tls: Boolean)
fun main() {
    val dev = Config("localhost", 8080, false)
    val prod = dev.copy(host = "prod.example.com", tls = true)
    println(prod) // Config(host=prod.example.com, port=8080, tls=true)
}

Automatisch generiertes componentN

Für jede Eigenschaft wird eine componentN()-Funktion (component1, component2, ...) erstellt, die Destrukturierung ermöglicht.

data class Pair2(val first: String, val second: Int)
fun main() {
    val p = Pair2("Ada", 35)
    val (name, age) = p
    println("$name is $age")
}

Was Data Classes nicht tun

Data Classes generieren kein toString für geerbte Felder, sind standardmäßig final und können nicht abstract, open, sealed oder inner sein.

data class Sample(val n: Int)
// open data class Bad(...) // ERROR
// sealed data class Bad(...) // ERROR
fun main() { println(Sample(1)) }

Eigenschaften außerhalb des primären Konstruktors

Eigenschaften, die im Klassenkörper deklariert werden, nehmen NICHT an equals, hashCode, toString oder copy teil.

data class Person(val name: String) {
    var nickname: String = ""
}
fun main() {
    val a = Person("Ada").apply { nickname = "Augusta" }
    val b = Person("Ada").apply { nickname = "Different" }
    println(a == b)   // true — only name matters
    println(a)         // Person(name=Ada)
}

Standardwerte

Kombinieren Sie data class mit Standardparametern, um eine flexible Konstruktion zu ermöglichen.

data class Request(
    val url: String,
    val method: String = "GET",
    val headers: Map<String, String> = emptyMap()
)
fun main() {
    println(Request("https://api.example.com"))
}

Praxis: DTO-Klasse

Data Classes eignen sich ideal für DTOs, API-Antworten und Wertobjekte.

data class ApiResponse(
    val status: Int,
    val body: String,
    val timestamp: Long
)
fun main() {
    val ok = ApiResponse(200, "{}", System.currentTimeMillis())
    println(ok)
}

Kurze Überprüfung

Welche Methode wird vom Kotlin-Compiler für eine Data Class NICHT automatisch generiert?

Zusammenfassung

Eine data class generiert automatisch equals, hashCode, toString, copy und componentN anhand der Eigenschaften ihres primären Konstruktors. Eigenschaften außerhalb des Konstruktors werden ausgeschlossen. Verwenden Sie Data Classes für DTOs, Wertobjekte und alle Container verwandter Werte.

Häufig gestellte Fragen

Ist die Lektion „Grundlagen von Data Classes: automatisch generierte Methoden“ kostenlos?

Ja — der vollständige Text von „Grundlagen von Data Classes: automatisch generierte Methoden“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Grundlagen von Data Classes: automatisch generierte Methoden“?

Verstehen Sie, was data class generiert: equals, hashCode, toString und copy. Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Kotlin Academy zu starten?

Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Grundlagen von Data Classes: automatisch generierte Methoden“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?

Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Grundlagen von Data Classes: automatisch generierte Methoden
  2. Kopieren mit copy() und teilweise Überschreibungen
  3. Destrukturierende Deklarationen mit componentN
  4. Data Classes in Collections und als Map-Schlüssel
← Zurück zu Kotlin Academy