Sobes.tech
Junior

Ako implementovať a používať data-classes v Kotlin?

sobes.tech AI

Odpoveď od AI

Dátové triedy sa používajú na ukladanie údajov. Kompilátor pre nich automaticky generuje užitočné metódy, ako sú equals(), hashCode(), toString(), copy() a funkcie componentN().

Implementácia: deklarácia triedy s prefixom data.

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

Použitie:

Vytvorenie inštancie:

val user = User("Alice", 30)

Prístup k vlastnostiam:

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

Použitie generovaných metód:

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

ďalšíUser = User("Alice", 30)
println(user == anotherUser) // true (generované `equals()`)

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

menoPoužívateľa, vekPoužívateľa = user // Destrukturalizácia
println("Meno: $menoPoužívateľa, Vek: $vekPoužívateľa") // Meno: Alice, Vek: 30

Vlastnosti:

  • Všetky hlavné konštruktorové parametre musia byť val alebo var.
  • Dátové triedy nemôžu byť abstract, open, sealed alebo inner.
  • Vlastnosti z tela triedy sa nezúčastňujú na generovaní metód (equals, hashCode, copy, componentN()).
data class Person(val name: String) {
    var height: Int = 0 // Nezúčastňuje sa v `equals`, `hashCode`, `copy`, `componentN()`
}

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