Junior
Qual é a característica especial da Data Class em comparação com outras classes em Kotlin?
sobes.tech IA
Resposta da IA
Características da Data Class em Kotlin:
- Geração automática das funções
equals(),hashCode(),toString(),copy()ecomponentN(). - Requerem pelo menos um parâmetro no construtor.
- Todos os parâmetros do construtor devem ser declarados como
valouvar. - Destinam-se principalmente ao armazenamento de dados.
Exemplo:
// Classe normal
class User(val name: String, val age: Int)
// Data Class
data class DataUser(val name: String, val age: Int)
fun main() {
val user1 = User("Alice", 30)
val user2 = User("Alice", 30)
println(user1 == user2) // false (compara referências por padrão)
println(user1.toString()) // Mostrará algo como User@hashcode
val dataUser1 = DataUser("Alice", 30)
val dataUser2 = DataUser("Alice", 30)
println(dataUser1 == dataUser2) // true (compara dados)
println(dataUser1.toString()) // Mostrará DataUser(name=Alice, age=30)
}
Diferenças nas funções geradas:
| Função | Classe normal | Data Class |
|---|---|---|
equals() |
Comparação de referências | Comparação de dados por campos |
hashCode() |
Depende da implementação | Depende dos dados por campos |
toString() |
Nome da classe e hash | Nome da classe e valores dos campos |
copy() |
Não (requer implementação manual) | Sim (permite criar cópias facilmente) |
componentN() |
Não | Sim (permite destruturar o objeto) |
Uso de componentN():
// Definição de uma Data Class
data class Point(val x: Int, val y: Int)
fun main() {
val p = Point(10, 20)
val (x, y) = p // Desestruturação usando component1(), component2()
println("x: $x, y: $y") // Mostrará x: 10, y: 20
}