Sobes.tech
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.