Sobes.tech
Junior — Middle

¿En qué casos y en qué lugar se pueden declarar subclases si la clase está marcada como sealed?

sobes.tech AI

Respuesta de la IA

En Kotlin, una clase marcada como sealed limita la jerarquía de herencia: todas las subclases de esa clase deben ser declaradas en el mismo archivo que la clase sellada. Esto permite que el compilador conozca el conjunto completo de herederos y lo utilice, por ejemplo, en expresiones when sin necesidad de escribir una rama else.

Es decir, las subclases de una clase sellada pueden ser declaradas:

  • En el mismo archivo donde se declara la clase sellada.
  • Dentro de la misma clase sellada (clases anidadas).

Ejemplo:

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

O

sealed class Result

class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()

Pero todas estas subclases deben estar en el mismo archivo que la clase sellada. Esta restricción ayuda a garantizar la seguridad de tipos y la exhaustividad de las comprobaciones.