Sobes.tech
Junior

Kaip įgyvendinti ir naudoti duomenų klases Kotlin?

sobes.tech AI

Atsakymas iš AI

Duomenų klasės naudojamos duomenų saugojimui. Konstruktorius automatiškai generuoja naudingus metodus, tokius kaip equals(), hashCode(), toString(), copy() ir componentN() funkcijas.

Įgyvendinimas: klasės deklaravimas su prefiksu data.

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

Naudojimas:

Instancijos sukūrimas:

val user = User("Alice", 30)

Savybių prieiga:

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

Naudojant sugeneruotus metodus:

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

kitasUser = User("Alice", 30)
println(user == anotherUser) // true (sugeneruotas `equals()`)

vyresnisUser = user.copy(age = 31) // User(name=Alice, age=31)

naudotojoVardas, naudotojoAmžius = user // Išardymas
println("Vardas: $naudotojoVardas, Amžius: $naudotojoAmžius") // Vardas: Alice, Amžius: 30

Ypatumai:

  • Visi pagrindiniai konstruktoriaus parametrai turi būti val arba var.
  • Duomenų klasės negali būti abstract, open, sealed arba inner.
  • Klasės kūno savybės nedalyvauja metodų (equals(), hashCode(), copy(), componentN()) generavime.
data class Person(val name: String) {
    var height: Int = 0 // Nedalyvauja `equals()`, `hashCode()`, `copy()`, `componentN()`
}

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