Junior — Middle
Em que casos é preferível usar sealed class em vez de enum em Kotlin?
sobes.tech IA
Resposta da IA
A classe selada em Kotlin é preferível a enum quando precisa descrever um conjunto limitado de tipos com estruturas de dados e comportamentos diferentes, e não apenas um conjunto de constantes.
Diferenças e quando usar uma classe selada:
- Dados diferentes nas variantes: Em enum, todos os elementos são constantes do mesmo tipo, enquanto que a classe selada permite que cada subclasse tenha suas próprias propriedades e métodos.
- Herança e extensibilidade: A classe selada é uma classe base com um número limitado de herdeiros, o que é útil para expressar hierarquias.
- Uso em when: O compilador verifica a completude do when para uma classe selada, aumentando a segurança.
Exemplo de classe selada:
sealed class Resultado {
data class Sucesso(val dados: String) : Resultado()
data class Erro(val erro: Throwable) : Resultado()
object Carregando : Resultado()
}
fun lidarComResultado(resultado: Resultado) {
when(resultado) {
is Resultado.Sucesso -> println("Dados: ${resultado.dados}")
is Resultado.Erro -> println("Erro: ${resultado.erro.message}")
Resultado.Carregando -> println("Carregando...")
}
}
Se precisar apenas de uma enumeração de constantes fixas sem dados, o enum será mais simples e eficiente.