Sobes.tech
Junior

Kāda ir Data Class īpašība salīdzinājumā ar citām klasēm Kotlin?

sobes.tech AI

Atbilde no AI

Kotlin Data klases īpašības:

  • Automātiski ģenerē equals(), hashCode(), toString(), copy(), un componentN() funkcijas.
  • Prasa vismaz vienu parametru konstruktorā.
  • Visi konstruktoru parametri jādeklarē kā val vai var.
  • Pirmkārt, paredzētas datu glabāšanai.

Piemērs:

// Parasta klases piemērs
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 (salīdzina atsauces)
    println(user1.toString()) // Kas līdzīgs User@hashkods

    val dataUser1 = DataUser("Alice", 30)
    val dataUser2 = DataUser("Alice", 30)
    println(dataUser1 == dataUser2) // true (salīdzina datus)
    println(dataUser1.toString()) // DataUser(name=Alice, age=30)
}

Atšķirības ģenerētajās funkcijās:

Funkcija Parasta klase Data Class
equals() Salīdzina atsauces Salīdzina datus pēc laukiem
hashCode() Atkarīgs no implementācijas Atkarīgs no datu laukiem
toString() Klases nosaukums un hash kods Klases nosaukums un lauku vērtības
copy() Nav (jāievieš pašam) Ir (ļauj viegli veidot kopijas)
componentN() Nav Ir (ļauj destrukturēt objektu)

componentN() izmantošana:

data class Point(val x: Int, val y: Int)

fun main() {
    val p = Point(10, 20)
    val (x, y) = p // destrukturizācija ar component1(), component2()
    println("x: $x, y: $y") // Izvade: x: 10, y: 20
}