Junior — Middle
Em que casos e em que lugar pode-se declarar subclasses se a classe estiver marcada como sealed?
sobes.tech IA
Resposta da IA
Em Kotlin, uma classe marcada como sealed limita a hierarquia de herança: todas as subclasses dessa classe devem ser declaradas no mesmo ficheiro que a própria classe sealed. Isto permite ao compilador conhecer o conjunto completo de herdeiros e usá-lo, por exemplo, em expressões when sem necessidade de escrever um ramo else.
Ou seja, as subclasses de uma classe sealed podem ser declaradas:
- No mesmo ficheiro onde a classe
sealedé declarada. - Dentro da própria classe
sealed(classes aninhadas).
Exemplo:
sealed class Result {
class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()
}
Ou
sealed class Result
class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()
Mas todas essas subclasses devem estar no mesmo ficheiro que a classe sealed. Esta restrição ajuda a garantir a segurança dos tipos e a completude das verificações.