Sobes.tech
Junior — Middle

Jaké výhody a scénáře použití znáš pro sealed class v Kotlinu?

sobes.tech AI

Odpověď od AI

Třída uzavřená (sealed class) v Kotlinu se používá k omezení hierarchie dědičnosti. Všechny podtřídy uzavřené třídy musí být deklarovány ve stejném souboru jako samotná uzavřená třída. To umožňuje kompilátoru znát všechny možné varianty dědiců, což je užitečné při použití ve výrazech when bez nutnosti psát větev else.

Výhody:

  • Bezpečnost typů: kompilátor kontroluje úplnost zpracování všech variant.
  • Vhodné pro modelování omezených sad stavů nebo událostí.

Scénáře použití:

  • Implementace stavů v vzoru "stav".
  • Zpracování událostí nebo příkazů.
  • Zobrazení omezené množiny možností, například odpovědí API.

Příklad:

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val error: Throwable) : Result()
    object Loading : Result()
}

fun handleResult(result: Result) {
    when(result) {
        is Result.Success -> println("Data: ${result.data}")
        is Result.Error -> println("Chyba: ${result.error.message}")
        Result.Loading -> println("Načítání...")
    }
}