Sobes.tech
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 val või var.
  • Andmeklass ei saa olla abstract, open, sealed või inner.
  • 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.