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í...")
}
}