Sobes.tech
Junior

V čom spočíva vlastnosť Data Class v porovnaní s inými triedami v Kotlin?

sobes.tech AI

Odpoveď od AI

Vlastnosti dátovej triedy v Kotlin:

  • Automatické generovanie funkcií equals(), hashCode(), toString(), copy() a componentN().
  • Vyžadujú aspoň jeden parameter v konštruktore.
  • Všetky parametre konštruktora musia byť deklarované ako val alebo var.
  • Sú určené predovšetkým na ukladanie dát.

Príklad:

// Bežná trieda
class User(val name: String, val age: Int)

// Data Class
data class DataUser(val name: String, val age: Int)

fun main() {
    val user1 = User("Alice", 30)
    val user2 = User("Alice", 30)
    println(user1 == user2) // false (porovnáva referencie podľa predvoleného nastavenia)
    println(user1.toString()) // Vypíše niečo ako User@hashcode

    val dataUser1 = DataUser("Alice", 30)
    val dataUser2 = DataUser("Alice", 30)
    println(dataUser1 == dataUser2) // true (porovnáva údaje)
    println(dataUser1.toString()) // Vypíše DataUser(name=Alice, age=30)
}

Rozdiely v generovaných funkciách:

Funkcia Bežná trieda Data Class
equals() Porovnanie referencií Porovnanie údajov podľa polí
hashCode() Závisí od implementácie Závisí od údajov podľa polí
toString() Názov triedy a hash kód Názov triedy a hodnoty polí
copy() Nie (je potrebná manuálna implementácia) Áno (umožňuje ľahké vytváranie kópií)
componentN() Nie Áno (umožňuje destrukturovať objekt)

Použitie componentN():

// Definícia dátovej triedy
data class Point(val x: Int, val y: Int)

fun main() {
    val p = Point(10, 20)
    val (x, y) = p // Destrukturovanie pomocou component1(), component2()
    println("x: $x, y: $y") // Vypíše x: 10, y: 20
}