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()()ycomponentN(). - Requieren al menos un parámetro en el constructor.
- Todos los parámetros del constructor deben declararse como
valovar. - 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
}