Junior — Middle
V jakých případech a na jakém místě lze deklarovat podtřídy, pokud je třída označena jako sealed?
sobes.tech AI
Odpověď od AI
V Kotlinu omezená třída sealed omezuje dědičnou hierarchii: všechny podtřídy této třídy musí být deklarovány ve stejném souboru jako samotná třída sealed. To umožňuje překladači znát úplný počet dědiců a používat je například ve výrazech when bez nutnosti psát větev else.
To znamená, že podtřídy třídy sealed lze deklarovat:
- Ve stejném souboru, ve kterém je deklarována třída
sealed. - Uvnitř samotné třídy
sealed(vnořené třídy).
Příklad:
sealed class Result {
class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()
}
Nebo
sealed class Result
class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()
Ale všechny tyto podtřídy musí být ve stejném souboru jako třída sealed. Tato omezení pomáhají zajistit typovou bezpečnost a úplnost kontrol.