Junior
Jak fungují datové třídy v Kotlinu?
sobes.tech AI
Odpověď od AI
Datové třídy v Kotlinu se používají pro ukládání dat. Kompilátor automaticky generuje standardní metody:
equals(): Porovnává instance na základě hodnot jejich vlastností.hashCode(): Generuje hash kód na základě hodnot vlastností.toString(): Vrací řetězcové zobrazení obsahující názvy a hodnoty všech vlastností.copy(): Vytváří kopii objektu, případně mění hodnoty uvedených vlastností.componentN(): Metody pro destrukturování (rozklad objektu na jednotlivé vlastnosti).
// Příklad datové třídy
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 destrukturování
val (name, age) = user1
println("Jméno: $name, Věk: $age") // Jméno: Alice, Věk: 30
}
Klíčové body:
- Všechny vlastnosti definované v hlavním konstruktoru musí být
valnebovar. - Datová třída nemůže být
abstract,open,sealedneboinner. - Datové třídy mohou dědit od jiných tříd nebo implementovat rozhraní.
- Vlastnosti deklarované mimo hlavní konstruktor se nezapočítávají do generování standardních metod.
| Metoda | Popis |
|---|---|
equals() |
Porovnává vlastnosti hlavního konstruktoru. |
hashCode() |
Generuje hash na základě vlastností hlavního konstruktoru. |
toString() |
Zobrazuje řetězcovou reprezentaci vlastností hlavního konstruktoru. |
copy() |
Vytváří plochou kopii s možností změny vlastností. |
componentN() |
Přístup ke vlastnostem v pořadí jejich deklarace v konstruktoru. |
Datové třídy výrazně zjednodušují práci s POJO (Plain Old Java Object) nebo DTO (Data Transfer Object), snižují boilerplate kód.