Sobes.tech
Junior

Como implementar e usar classes de dados em Kotlin?

sobes.tech IA

Resposta da IA

As classes de dados são usadas para armazenar dados. O compilador gera automaticamente métodos úteis para elas, como equals(), hashCode(), toString(), copy() e funções componentN().

Implementação: declaração da classe com o prefixo data.

data class User(val name: String, val age: Int)

Uso:

Criação de uma instância:

val user = User("Alice", 30)

Acesso às propriedades:

val name = user.name // Alice
val age = user.age   // 30

Uso dos métodos gerados:

println(user.toString()) // User(name=Alice, age=30)

val anotherUser = User("Alice", 30)
println(user == anotherUser) // true (equals() gerado)

val olderUser = user.copy(age = 31) // User(name=Alice, age=31)

val (userName, userAge) = user // Desestruturação
println("Name: $userName, Age: $userAge") // Name: Alice, Age: 30

Características:

  • Todos os parâmetros do construtor principal devem ser val ou var.
  • Classes de dados não podem ser abstract, open, sealed ou inner.
  • As propriedades do corpo da classe não participam na geração de métodos (equals, hashCode, copy, componentN).
data class Person(val name: String) {
    var height: Int = 0 // Não participa em equals/hashCode/copy/componentN
}

val p1 = Person("Bob")
p1.height = 180
val p2 = Person("Bob")
p2.height = 190
println(p1 == p2) // true