Sobes.tech
Junior

Kā darbojas datu klases Kotlin?

sobes.tech AI

Atbilde no AI

Kotlin datu klases tiek izmantotas datu glabāšanai. Kompilators automātiski ģenerē standarta metodes:

  • equals(): Salīdzina instances pēc to īpašību vērtībām.
  • hashCode(): Ģenerē hash kodu, balstoties uz īpašību vērtībām.
  • toString(): Atgriež virknes attēlojumu, kas ietver visu īpašību nosaukumus un vērtības.
  • copy(): Izveido objekta kopiju, ja nepieciešams, mainot norādīto īpašību vērtības.
  • componentN(): Metodes objekta destrukturizācijai (objekta sadalīšanai atsevišķās īpašībās).
// Datu klases piemērs
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) // patiesība
    println(user1 == user3) // nepatiesība

    // toString()
    println(user1.toString()) // User(name=Alice, age=30)

    // copy()
    val user4 = user1.copy(age = 31)
    println(user4) // User(name=Alice, age=31)

    // componentN() un destrukturizācija
    val (name, age) = user1
    println("Name: $name, Age: $age") // Name: Alice, Age: 30
}

Galvenie punkti:

  • Visas īpašības, kas definētas galvenajā konstruktorā, ir jābūt val vai var.
  • Datu klase nevar būt abstract, open, sealed vai inner.
  • Datu klases var manto citus klases vai realizēt interfeisus.
  • Īpašības, deklarētas ārpus galvenā konstruktora, neiesaistās standarta metožu ģenerēšanā.
Metode Apraksts
equals() Salīdzina īpašības no galvenā konstruktora.
hashCode() Ģenerē hash, balstoties uz galvenā konstruktora īpašībām.
toString() Izvada īpašību tekstuālo attēlojumu.
copy() Izveido virspusēju kopiju ar iespēju mainīt īpašības.
componentN() Pieejas īpašībām pēc to secības konstruktorā.

Datu klases ievērojami vienkāršo darbu ar POJO (Plain Old Java Object) vai DTO (Data Transfer Object), samazinot boilerplate kodu.