Junior — Middle
V akých prípadoch je vhodnejšie použiť sealed class namiesto enum v Kotlin?
sobes.tech AI
Odpoveď od AI
V Kotlinu je sealed class preferovaná pred enum, keď je potrebné opísať obmedzený súbor typov s rôznymi štruktúrami dát a správaním, nie len sadu konštánt.
Rozdiely a kedy použiť sealed class:
- Rôzne dáta pri variantoch: V enum sú všetky prvky konštantami rovnakého typu, zatiaľ čo sealed class umožňuje každej podtriede mať vlastné vlastnosti a metódy.
- Dedičnosť a rozšíriteľnosť: Sealed class je základná trieda s obmedzeným počtom dedičov, čo je užitočné na vyjadrenie hierarchií.
- Použitie v when: Kompilátor kontroluje úplnosť when pre sealed class, čím zvyšuje bezpečnosť.
Príklad sealed class:
sealed class Výsledok {
data class Úspech(val dáta: String) : Výsledok()
data class Chyba(val chyba: Throwable) : Výsledok()
object Načítanie : Výsledok()
}
fun spracujVýsledok(výsledok: Výsledok) {
when(výsledok) {
is Výsledok.Úspech -> println("Dáta: ${výsledok.dáta}")
is Výsledok.Chyba -> println("Chyba: ${výsledok.chyba.message}")
Výsledok.Načítanie -> println("Načítam...")
}
}
Ak potrebujete len zoznam pevných konštánt bez dát, enum bude jednoduchší a efektívnejší.