Sobes.tech
Junior

Ako fungujú dátové triedy v Kotlin?

sobes.tech AI

Odpoveď od AI

Dátové triedy v Kotlin sa používajú na ukladanie údajov. Kompilátor pre ne automaticky generuje štandardné metódy:

  • equals(): Porovnáva inštancie na základe hodnôt ich vlastností.
  • hashCode(): Generuje hash kód na základe hodnôt vlastností.
  • toString(): Vráti reťazcové zobrazenie obsahujúce mená a hodnoty všetkých vlastností.
  • copy(): Vytvorí kópiu objektu, prípadne zmení hodnoty uvedených vlastností.
  • componentN(): Metódy na destrukturalizáciu (rozklad objektu na jednotlivé vlastnosti).
// Príklad dátovej triedy
data class User(val name: String, val age: Int)

fun main() {
    val user1 = User("Alice", 30)
    val user2 = User("Alice", 30)
    val user3 = User("Bob", 25)

    // equals()
    println(user1 == user2) // true
    println(user1 == user3) // false

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

    // copy()
    val user4 = user1.copy(age = 31)
    println(user4) // User(name=Alice, age=31)

    // componentN() a destrukturalizácia
    val (name, age) = user1
    println("Name: $name, Age: $age") // Name: Alice, Age: 30
}

Kľúčové body:

  • Všetky vlastnosti definované v hlavnom konštruktore musia byť buď val, alebo var.
  • Dátová trieda nemôže byť abstract, open, sealed alebo inner.
  • Dátové triedy môžu dediť od iných tried alebo implementovať rozhrania.
  • Vlastnosti deklarované mimo hlavného konštruktora sa nezúčastňujú na generovaní štandardných metód.
Metóda Popis
equals() Porovnáva vlastnosti z hlavného konštruktora.
hashCode() Generuje hash na základe vlastností z hlavného konštruktora.
toString() Vypíše reťazcové zobrazenie vlastností z hlavného konštruktora.
copy() Vytvorí povrchovú kópiu s možnosťou zmeny vlastností.
componentN() Poskytuje prístup k vlastnostiam podľa ich poradia v konštruktore.

Dátové triedy výrazne zjednodušujú prácu s POJO (Plain Old Java Object) alebo DTO (Data Transfer Object), znižujúc množstvo boilerplate kódu.