Junior
Kuidas töötavad andmeklassid Kotlinis?
sobes.tech AI
Vastus AI-lt
Kotlinis andmeklassid kasutatakse andmete salvestamiseks. Kompilaator genereerib automaatselt nende jaoks standardmeetodid:
equals(): Võrdleb eksemplare nende omaduste väärtuste põhjal.hashCode(): Genereerib hash-koodi nende omaduste väärtuste põhjal.toString(): Tagastab string-kujundi, mis sisaldab kõiki omaduste nimesid ja väärtusi.copy(): Loob objekti koopiat, vajadusel muutes määratud omaduste väärtusi.componentN(): meetodid objekti destruktureerimiseks (objekti jagamiseks eraldi omadusteks).
// Andmeklasside näide
data class User(val name: String, val age: Int)
fun main() {
val user1 = User("Alice", 30)
val user2 = User("Alice", 30)
val user3 = User("Bob", 25)
// equals()
println(user1 == user2) // tõene
println(user1 == user3) // väär
// toString()
println(user1.toString()) // User(name=Alice, age=30)
// copy()
val user4 = user1.copy(age = 31)
println(user4) // User(name=Alice, age=31)
// componentN() ja destruktureerimine
val (name, age) = user1
println("Name: $name, Age: $age") // Name: Alice, Age: 30
}
Peamised punktid:
- Kõik põhikontruktoris määratletud omadused peavad olema
valvõivar. - Andmeklass ei saa olla
abstract,open,sealedvõiinner. - Andmeklassid võivad pärida teisi klasse või rakendada liideseid.
- Omadused, mis on deklareeritud väljaspool põhikontruktorit, ei osale standardmeetodite genereerimises.
| Meetod | Kirjeldus |
|---|---|
equals() |
Võrdleb põhikontruktorist pärit omadusi. |
hashCode() |
Genereerib hash-koodi põhikontruktorist pärit omaduste põhjal. |
toString() |
Väljundab omaduste tekstipõhise esitluse. |
copy() |
Loob pinnapealse koopia koos võimalusega muuta omadusi. |
componentN() |
Juurdepääs omadustele nende järjekorra järgi konstruktoris. |
Andmeklassid lihtsustavad oluliselt POJO (Plain Old Java Object) või DTO (Data Transfer Object) tööd, vähendades boilerplate-koodi.