Dátové triedy (data class) sú triedy, ktoré slúžia primárne na uchovávanie dát. Kotlin nám automaticky vygeneruje užitočné funkcie ako toString, equals, hashCode, copy a componentN.
data class Person(val name: String, val age: Int)
fun main() {
val p1 = Person("Janko", 25)
val p2 = Person("Janko", 25)
val p3 = p1.copy(age = 30)
println(p1) // Person(name=Janko, age=25)
println(p1 == p2) // true - porovnava podla hodnot
println(p3) // Person(name=Janko, age=30)
println(p3.component1()) // Janko
println(p3.component2()) // 30
}
Bez
databy triedaPersonmala len defaultnétoStringzAny, ktorý vypíše niečo akoPerson@1a2b3c4d.
Vďaka funkciám componentN vieme používať deštrukciu (destructuring):
data class Person(val name: String, val age: Int)
fun main() {
val person = Person("Janko", 25)
val (name, age) = person // destrukcia
println(name) // Janko
println(age) // 25
}
Funkcia copy vytvorí novú kópiu objektu s možnosťou zmeniť niektoré atribúty:
data class Person(val name: String, val age: Int)
fun main() {
val original = Person("Janko", 25)
val older = original.copy(age = 26)
val renamed = original.copy(name = "Fero")
println(original) // Person(name=Janko, age=25)
println(older) // Person(name=Janko, age=26)
println(renamed) // Person(name=Fero, age=25)
}
Povinné atribúty (bez defaultnej hodnoty) musíme zadefinovať v primárnom konštruktore s
valalebovar.
Vytvor dátovú triedu Film s názvom, rokom a hodnotením a vypíš jej objekt.
Vytvor kópiu filmu pomocou copy, v ktorej zmeníš iba hodnotenie, a porovnaj oba objekty.
Pomocou deštrukcie získaj názov a rok z objektu Film a samostatne ich vypíš.