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 |