Data class Kotlin

En este tutorial se explica que es una Data class Kotlin, su principal uso es para el almacenamiento de datos. Aqui se explica un ejemplo de cómo usarla. Además también se puede usar como un objeto en Kotlin.

Una data class en Kotlin es una clase que se utiliza principalmente para almacenar datos.

Al crear una data class Kotlin automáticamente genera funciones útiles como equals(), hashCode(), toString(), copy(), y componentN() para las propiedades declaradas en la data class.

¿Cómo crear una data class?

Es un proceso muy simple, solo iniciamos indicando que será una data class, luego indicamos el nombre y por último las variables que tendrá.

En el siguiente código se muestra como crear una data class, llamada Persona, class con dos propiedades: nombre y edad.

    data class Persona(val nombre: String, val edad: Int)

Kotlin automáticamente genera funciones para estas propiedades.

Objeto en Kotlin, accediendo a las propiedades.

En Kotlin, las data class también pueden ser utilizadas como objetos, lo que significa que puedes crear instancias de ellas sin necesidad de la palabra clave “new” y acceder a sus propiedades de una manera muy simple.

Aquí mostramos cómo hacerlo:

data class Persona(val nombre: String, val edad: Int)

fun main() {
    // Crear instancias de Persona sin "new"
    val persona1 = Persona("Juan", 30)
    val persona2 = Persona("María", 25)

    // Acceder a las propiedades
    println("Nombre: ${persona1.nombre}, Edad: ${persona1.edad}")
    println("Nombre: ${persona2.nombre}, Edad: ${persona2.edad}")
}

En este ejemplo, las instancias persona1 y persona2 se crean sin la necesidad de usar la palabra clave “new”. Simplemente llamamos al constructor de la data class Persona y proporcionamos los valores para las propiedades nombre y edad.

Luego, podemos acceder a las propiedades utilizando la notación de punto (.) como en persona1.nombre y persona2.edad.

Funciones generadas automáticamente.

Ahora vamos a ver como se usa la data class y las funciones que Kotlin genera automáticamente.

Primero creamos 2 variables que serán tipo Persona, que es nuestra data class.

    val persona1 = Persona("Juan", 30)
    val persona2 = Persona("María", 25)

Función Equals.

Podemos comparar si el contenido de los objetos es igual o no.

if (persona1 == persona2) {
    println("Las personas son iguales.")
} else {
    println("Las personas son diferentes.")
}

Para que las personas sean iguales, todas sus propiedades deberán ser idénticas.

Función toString

Esta función devuelve una representación de cadena de la data class

println(persona1.toString())

En el siguiente ejemplo, mostramos como efectivamente es una String. Imprimimos todo, luego solo una posición y al final agregamos más elementos String.

Función copy.

Crea una copia modificada del objeto. Podemos crear otra variable y cambiar alguna de las propiedades del objeto. Como se muestra en el siguiente código.

val persona3 = persona2.copy(edad = 35)
println(persona3)

En la siguiente imagen se muestra el código funcionando.

Función componentN, desestructurar.

Permite desestructurar el objeto. Es decir, podemos crear variables de una de las propiedades del objeto, como se muestra a continuación:

val (nombre, edad) = persona2
println("Nombre: $nombre, Edad: $edad")

No es necesario que las variables lleven el mismo nombre que las propiedades de la clase. El valor de las variables se asigna por el orden.

Data class con valores por default.

Podemos declarar un objeto que tenga valores por default. Esto nos ayuda a no llenar todos los campos al declarar una nueva variable.

En el ejemplo anterior, el nombre tiene un valor nulo por default, la edad tiene un valor de 20 si no se indica y la estatura no tiene valor predefinido por lo que siempre hay que ingresarlo.

A la persona1, solo se le da la edad y estatura, se omite el nombre.

Mientras que a la persona 2, se le dan todos los parámetros. Vemos que no es necesario especificar el nombre de la propiedad ya que se asignan por el orden.

Ventajas de usar data class.

Aquí dejamos algunas de las ventajas que ofrece usar data class.

1. Conciso: Requiere menos código para definir una clase de datos.

2. Funciones útiles generadas automáticamente: Las funciones generadas simplifican el manejo de objetos de datos.

3. Inmutabilidad: Por defecto, las data class son inmutables, es decir que no cambian, lo que garantiza la seguridad de los datos.

Básicamente simplifican la creación y el manejo de objetos de datos, lo que hace que el código sea más limpio y legible.

Para más tutoriales de Kotlin ve a este enlace.

Algunos temas que te pueden interesar: