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(), uncomponentN()funkcijas. - Prasa vismaz vienu parametru konstruktorā.
- Visi konstruktoru parametri jādeklarē kā
valvaivar. - 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
}