Junior
Ako fungujú dátové triedy v Kotlin?
sobes.tech AI
Odpoveď od AI
Dátové triedy v Kotlin sa používajú na ukladanie údajov. Kompilátor pre ne automaticky generuje štandardné metódy:
equals(): Porovnáva inštancie na základe hodnôt ich vlastností.hashCode(): Generuje hash kód na základe hodnôt vlastností.toString(): Vráti reťazcové zobrazenie obsahujúce mená a hodnoty všetkých vlastností.copy(): Vytvorí kópiu objektu, prípadne zmení hodnoty uvedených vlastností.componentN(): Metódy na destrukturalizáciu (rozklad objektu na jednotlivé vlastnosti).
// Príklad dátovej triedy
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) // true
println(user1 == user3) // false
// toString()
println(user1.toString()) // User(name=Alice, age=30)
// copy()
val user4 = user1.copy(age = 31)
println(user4) // User(name=Alice, age=31)
// componentN() a destrukturalizácia
val (name, age) = user1
println("Name: $name, Age: $age") // Name: Alice, Age: 30
}
Kľúčové body:
- Všetky vlastnosti definované v hlavnom konštruktore musia byť buď
val, alebovar. - Dátová trieda nemôže byť
abstract,open,sealedaleboinner. - Dátové triedy môžu dediť od iných tried alebo implementovať rozhrania.
- Vlastnosti deklarované mimo hlavného konštruktora sa nezúčastňujú na generovaní štandardných metód.
| Metóda | Popis |
|---|---|
equals() |
Porovnáva vlastnosti z hlavného konštruktora. |
hashCode() |
Generuje hash na základe vlastností z hlavného konštruktora. |
toString() |
Vypíše reťazcové zobrazenie vlastností z hlavného konštruktora. |
copy() |
Vytvorí povrchovú kópiu s možnosťou zmeny vlastností. |
componentN() |
Poskytuje prístup k vlastnostiam podľa ich poradia v konštruktore. |
Dátové triedy výrazne zjednodušujú prácu s POJO (Plain Old Java Object) alebo DTO (Data Transfer Object), znižujúc množstvo boilerplate kódu.