Junior
Kaip veikia duomenų klasės Kotlin?
sobes.tech AI
Atsakymas iš AI
Kotlin duomenų klasės naudojamos duomenų saugojimui. Konstruktorius automatiškai sugeneruoja standartinius metodus:
equals(): Palygina objektus pagal jų savybių reikšmes.hashCode(): Sugeneruoja hash kodą pagal savybių reikšmes.toString(): Grąžina eilutės vaizdą, įtraukiantį visų savybių pavadinimus ir reikšmes.copy(): Sukuria objekto kopiją, jei reikia, keisdama nurodytų savybių reikšmes.componentN(): metodai objektų destruktūrizacijai (objekto išardymui į atskiras savybes).
// Duomenų klasės pavyzdys
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) // tiesa
println(user1 == user3) // klaidinga
// toString()
println(user1.toString()) // User(name=Alice, age=30)
// copy()
val user4 = user1.copy(age = 31)
println(user4) // User(name=Alice, age=31)
// componentN() ir destruktūrizacija
val (name, age) = user1
println("Name: $name, Age: $age") // Name: Alice, Age: 30
}
Svarbūs punktai:
- Visos savybės, apibrėžtos pagrindiniame konstruktoriuje, turi būti
valarbavar. - Duomenų klasė negali būti
abstract,open,sealedarbainner. - Duomenų klasės gali paveldėti kitas klases arba įgyvendinti sąsajas.
- Savybės, deklaruotos už pagrindinio konstruktoriaus ribų, nedalyvauja standartinių metodų generavime.
| Metodas | Aprašymas |
|---|---|
equals() |
Palygina savybes iš pagrindinio konstruktoriaus. |
hashCode() |
Sugeneruoja hash pagal savybes iš pagrindinio konstruktoriaus. |
toString() |
Išveda eilutės vaizdą su savybėmis iš pagrindinio konstruktoriaus. |
copy() |
Sukuria paviršutinę kopiją su galimybe keisti savybes. |
componentN() |
Prieiga prie savybių pagal jų eilės numerį konstruktoriuje. |
Duomenų klasės žymiai palengvina darbą su POJO (Plain Old Java Object) arba DTO (Data Transfer Object), sumažindamos boilerplate kodą.