Select Page

Kotlin Data class

Jaroslav Beňo

26/05/2020

Ak potrebuješ uchovávať stav aplikácie. Teda máš premenné a potrebuješ ich nastavovať a získavať ich hodnoty, tak vieš použiť Data class.

Máme triedu Auto:

class Auto (val nazov: String, val pocetDveri: Int = 4) {

}  

Ako z nej spravím data class? Jednoducho pred slovo class pridáme data:

data class Auto (val nazov: String, val pocetDveri: Int = 4) {

}

Čo sa zmenilo? Kotlin nám na pozadí poskytol ďalšiu funkcionalitu. Spraví špeciálnu implementáciu funkcií ako toString alebo equals. Ak sa nám nepáčia, stále ich vieme ovverridnúť a napísať sami.

Konštruktor v data class musí obsahovať len property, nemôžeme odstrániť val alebo var.

Ak sa pokúsim vypísať na konzolu instanciu:

val skoda = Auto("Skoda", 5)
print(skoda)

Tak na výpise bude pekný text:

Auto(nazov=Skoda, pocetDveri=5)

Ak sa pokúsim vypísať instanciu nie data classy:

val osoba = Osoba("Jaro", "151515/1616")
println(osoba)

Tak na výpise už nebude taký pekný text:

sk.jaroslavbeno.kotlin.Osoba@506e1b77

Podobne to bude aj pri porovnávaní. Povedali sme si, že existuje takzv štrukturálne porovnávanie, kde sme museli napísať vlastnú equals funkciu na porovnanie rodných čísel a až vtedy sa nám dva objekty rovnali. Majme teraz jednoduchú triedu osoba:

class Osoba(var meno: String, val rodCislo: String) {

}  

A štrukturálne porovnajme dve instancie – dva objekty typu Osoba s rovnakým menom a rovnakým rodným číslom:

val osoba = Osoba("Jaro", "151515/1616")
val osoba2 = Osoba("Jaro", "151515/1616")
println(osoba == osoba2)

Na výpise bude false.

Ak to isté spravím z data class – porovnám dva objekty, bez toho aby som zašpecifikoval vlastnú equals metódu:

val skoda = Auto("Skoda", 5)
val skoda2 = Auto("Skoda", 5)
println(skoda == skoda2)

Tak na výpise bude true. V data classoch sa porovnajú štruktúry – property na pozadí. Ak chceme tak vieme prepísať equals funkciu ako sme to robili pri Osobe.

Ďalšou pomocnou funkciou je copy. Táto funkcia nám spraví to, že vytvorí nový objekt, na základe starého objektu – prekopíruje jeho štruktúru.

val skoda3 = skoda.copy()

Štrukturálne budú objekty rovnaké ale budú mať inú referenciu:

println(skoda == skoda3)  //true
println(skoda === skoda3) //false

Copy funkcia nám dovoľuje zašpecifikovať, ktoré property chceme nastaviť inak ako sú v pôvodnom objekte. Napr. počet dverí bude iný:

val skoda4 = skoda.copy(pocetDveri = 4)

Postupne čiarkou a nastavením property vieš nastaviť aj iné property.

O autorovi: Jaroslav Beňo

Jaro je v skratke kresťan, manžel, otec a programátor. Na tomto webe sa venuje programovaniu. Jeho túžbou je šíriť vedomosti ďalej, aby sme mohli spolu rásť.

Pripravil viacero online video kurzov. Jeho sociálne siete:

Podobné články

Kotlin podmienky if a if else

V tomto článku sa naučíš, čo je to podmienka a ako ju požiť. Poďme na to a poďme sa naučiť Kotlin podmienky if a if else. Základom každého algoritmu je podmienka. Ak niečo, tak niečo, alebo niečo iné. Napríklad ideš kúpiť vajíčka do obchodu: Je obchod otvorený? Ak...

Kotlin porovnávanie, rozdiel medzi == a ===

V tomto článku sa oboznámiš ako je to v Kotline s porovnávaním. Dozvieš sa aký je rozdiel medzi == a ===. Poďme na to v článku Kotlin porovnávanie, rozdiel medzi == a ===. V Jave ak by som porovnal dve premenné pomocou ==, tak sa porovná ich hodnota. V Kotline je...

Kotlin premenné

V tomto článku sa dozvieš čo sú to premenné a ako fungujú v programovacom jazyku Kotlin. Premenné sú jedným zo základných pilierov pri programovaní. Musíš vedieť, ako sa vytvárajú a na čo slúžia. Poďme na to Kotlin premenné. Premenné slúžia na uchovanie informácii...

Kotlin prvý program

V tomto článku sa dozvieš ako krok za krokom napíšeš svoj prvý program v Kotline. Potrebuješ vývojové prostredie IntelliJ IDEA a ostatné sa dozvieš v článku. Vytvoríme nový Kotlin/JVM project a dáme Next. Pomenujeme projekt a zašpecifikujeme umiestnenie....

Ako skonvertovať Java kód na Kotlin kód

V IntelliJ IDEA máme možnosť skopírovať java kód a po vložení do Kotlin kódu sa nás IDEA spýta, či daný kód chceme preložiť do Kotlin kódu. Toto je rýchli spôsob ako si vyskúšať ako by Java kód vyzeral v Kotline. A ty sa v tomto článku dozvieš ako na...

Kotlin úvod v skratke

V tomto článku sa ti v skratke budem snažiť povedať, čo je to Kotlin. Kotlin je programovací jazyk, ktorý vlastní JetBrains, ktorý vytvorili napríklad IntelliJ IDEA vývojové prostredie. Kotlin je navrhnutý tak, aby mohol byť spustený na JVM, tak ako iné java programy....

Kotlin plugin v IntelliJ IDEA

Pri programovaní aplikácie - programu v jazyku Kotlin vieme použiť napríklad IntelliJ IDEA vývojové prostredie. Ja toto prostredie odporúčam a v tomto článku sa dozvieš ako nastaviť Kotlin plugin v IntelliJ IDEA. V IntelliJ IDEA si musíme byť istý, že máme...

Share This

Páčil sa ti článok? Zváž zdieľanie. Ďakujeme.