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
valarbavar. - Duomenų klasės negali būti
abstract,open,sealedarbainner. - 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