Sobes.tech
Middle

Para que são usadas as classes de dados e as classes seladas em Kotlin?

sobes.tech IA

Resposta da IA

As classes de dados facilitam a criação de classes destinadas apenas ao armazenamento de dados. O compilador gera automaticamente para elas:

  • equals()
  • hashCode()
  • toString()
  • copy()
  • componentN() para destruturação
classe de dados User(val nome: String, val idade: Int)

// Uso
val user = User("Alice", 30)
println(user) // Mostra User(nome=Alice, idade=30)
val user2 = user.copy(idade = 31)
val (nome, idade) = user // Desestruturação

As classes seladas representam uma hierarquia limitada de classes, onde todas as subclasses possíveis são conhecidas em tempo de compilação. Isso permite usá-las em expressões when sem um bloco else, garantindo uma verificação exaustiva de todas as opções.

classe selada Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
    object Loading : Result() // Objeto, pois não possui parâmetros
}

fun handleResult(result: Result) {
    when (result) {
        is Result.Success -> println("Sucesso: ${result.data}")
        is Result.Error -> println("Erro: ${result.message}")
        Result.Loading -> println("Carregando...")
    }
}

Comparação:

Característica Classe de dados Classe selada
Propósito Armazenamento de dados Hierarquia limitada de classes
Capacidades Geração automática de métodos Verificação exaustiva em when
Subclasses Sem restrição específica Devem estar no mesmo arquivo ou módulo
Uso Modelos de dados, DTOs Representação de estados, eventos, opções