Sobes.tech
Junior

Jak implementovat a používat datové třídy v Kotlinu?

sobes.tech AI

Odpověď od AI

Datové třídy se používají k ukládání dat. Kompilátor pro ně automaticky generuje užitečné metody, jako jsou equals(), hashCode(), toString(), copy() a funkce componentN().

Implementace: deklarace třídy s předponou data.

data class User(val name: String, val age: Int)

Použití:

Vytvoření instance:

val user = User("Alice", 30)

Přístup k vlastnostem:

val name = user.name // Alice
val age = user.age   // 30

Použití generovaných metod:

println(user.toString()) // User(name=Alice, age=30)

dalšíUser = User("Alice", 30)
println(user == anotherUser) // true (equals() generováno)

staršíUser = user.copy(age = 31) // User(name=Alice, age=31)

uživatelJméno, uživatelVěk = user // Destrukturalizace
println("Jméno: $uživatelJméno, Věk: $uživatelVěk") // Jméno: Alice, Věk: 30

Vlastnosti:

  • Všechny hlavní konstruktorové parametry musí být val nebo var.
  • Datové třídy nemohou být abstract, open, sealed nebo inner.
  • Vlastnosti z těla třídy se nepodílejí na generování metod (equals, hashCode, copy, componentN()).
data class Person(val name: String) {
    var height: Int = 0 // Neúčastní se `equals`, `hashCode`, `copy`, `componentN()`
}

val p1 = Person("Bob")
p1.height = 180
val p2 = Person("Bob")
p2.height = 190
println(p1 == p2) // true