O que é Data Class em Kotlin?
Uma data class em Kotlin é uma classe feita especialmente para armazenar dados. Quando você declara uma classe com o modificador data, o compilador gera automaticamente os métodos equals(), hashCode(), toString(), copy() e funções componentN() — tudo de graça.
Em Java, você precisaria escrever tudo isso na mão (ou usar uma biblioteca). Em Kotlin, basta uma linha.
Sintaxe básica
data class Usuario(val nome: String, val email: String, val idade: Int)
fun main() {
val user = Usuario("Mariana", "mari@email.com", 30)
println(user) // Usuario(nome=Mariana, email=mari@email.com, idade=30)
}
Olha só: o toString() já vem formatado bonitinho, sem você fazer nada.
Comparação automática
Com data class, a comparação entre objetos é feita pelo conteúdo, não pela referência:
val a = Usuario("Lucas", "lucas@email.com", 25)
val b = Usuario("Lucas", "lucas@email.com", 25)
println(a == b) // true — mesmo conteúdo
println(a === b) // false — objetos diferentes na memória
A função copy()
Uma das funcionalidades mais práticas é o copy(), que cria uma cópia do objeto permitindo alterar apenas alguns campos:
val original = Usuario("Ana", "ana@email.com", 22)
val atualizado = original.copy(idade = 23)
println(atualizado) // Usuario(nome=Ana, email=ana@email.com, idade=23)
Isso é especialmente útil quando você trabalha com objetos imutáveis e precisa criar variações.
Destructuring
As funções componentN() geradas permitem usar destructuring:
val (nome, email, idade) = Usuario("Pedro", "pedro@email.com", 35)
println("$nome ($email) - $idade anos")
Regras importantes
- O construtor primário precisa ter pelo menos um parâmetro.
- Todos os parâmetros do construtor devem ser
valouvar. - Data classes não podem ser
abstract,open,sealedouinner.
Data classes são perfeitas pra representar entidades, respostas de API, configurações e qualquer estrutura que carregue dados no seu projeto Kotlin.