Junior — Middle
In quali casi e in quale luogo è possibile dichiarare sottoclassi se la classe è contrassegnata come sealed?
sobes.tech AI
Risposta dell'AI
In Kotlin, una classe contrassegnata come sealed limita la gerarchia di ereditarietà: tutte le sottoclassi di questa classe devono essere dichiarate nello stesso file della classe sealed. Questo permette al compilatore di conoscere l'insieme completo di eredi e di usarlo, ad esempio, nelle espressioni when senza la necessità di scrivere un ramo else.
Cioè, le sottoclassi di una classe sealed possono essere dichiarate:
- Nello stesso file in cui è dichiarata la classe
sealed. - All'interno della stessa classe
sealed(classi annidate).
Esempio:
sealed class Result {
class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()
}
Oppure
sealed class Result
class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()
Ma tutte queste sottoclassi devono trovarsi nello stesso file della classe sealed. Questa restrizione aiuta a garantire la sicurezza dei tipi e la completezza dei controlli.