Sobes.tech
Junior

¿En qué consiste la característica de Data Class en comparación con otras clases en Kotlin?

sobes.tech AI

Respuesta de la IA

Características de la Data Class en Kotlin:

  • Generación automática de funciones equals(), hashCode(), toString(), copy()() y componentN().
  • Requieren al menos un parámetro en el constructor.
  • Todos los parámetros del constructor deben declararse como val o var.
  • Están destinadas principalmente para almacenar datos.

Ejemplo:

// Clase 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 referencias por defecto)
    println(user1.toString()) // Mostrará algo como User@hashcode

    val dataUser1 = DataUser("Alice", 30)
    val dataUser2 = DataUser("Alice", 30)
    println(dataUser1 == dataUser2) // true (compara datos)
    println(dataUser1.toString()) // Mostrará DataUser(name=Alice, age=30)
}

Diferencias en las funciones generadas:

Función Clase normal Data Class
equals() Comparación de referencias Comparación de datos por campos
hashCode() Depende de la implementación Depende de los datos por campos
toString() Nombre de la clase y hash Nombre de la clase y valores de los campos
copy() No (requiere implementación manual) Sí (permite crear copias fácilmente)
componentN() No Sí (permite destructurar el objeto)

Uso de componentN():

data class Point(val x: Int, val y: Int)

fun main() {
    val p = Point(10, 20)
    val (x, y) = p // Desestructuración usando component1(), component2()
    println("x: $x, y: $y") // Mostrará x: 10, y: 20
}