Junior
Mis on Data Class'i eripära võrreldes teiste klassidega Kotlinis?
sobes.tech AI
Vastus AI-lt
Kotlin Data klassi omadused:
- Automaatne
equals(),hashCode(),toString(),copy(), jacomponentN()funktsioonide generatsioon. - Vajab vähemalt ühte parameetrit konstruktoris.
- Kõik konstruktoriparameetrid peavad olema deklareeritud kui
valvõivar. - Esiteks mõeldud andmete salvestamiseks.
Näide:
// Tavaline klass
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 (võrdleb viiteid)
println(user1.toString()) // Midagi sarnast User@hash-kood
val dataUser1 = DataUser("Alice", 30)
val dataUser2 = DataUser("Alice", 30)
println(dataUser1 == dataUser2) // true (võrdleb andmeid)
println(dataUser1.toString()) // DataUser(name=Alice, age=30)
}
Erinevused genereeritud funktsioonides:
| Funktsioon | Tavaline klass | Data Class |
|---|---|---|
equals() |
Viidete võrdlus | Andmete võrdlus väljade järgi |
hashCode() |
Sõltub rakendusest | Sõltub väljade andmetest |
toString() |
Klassinimi ja hash-kood | Klassinimi ja väljade väärtused |
copy() |
Ei ole (vajab käsitsi) | On (lubab hõlpsasti koopiaid teha) |
componentN() |
Ei ole | On (lubab objekti destruktureerida) |
componentN() kasutamine:
data class Point(val x: Int, val y: Int)
fun main() {
val p = Point(10, 20)
val (x, y) = p // destruktureerimine component1(), component2() kasutades
println("x: $x, y: $y") // Väljund: x: 10, y: 20
}