Avatar ·

¿Cómo clonar un objeto en Kotlin? Problema con la mutabilidad y las referencias

¡Hola a todos! Acabo de empezar a aprender Kotlin y me encontré con un problema al clonar objetos. En Java usaba el método `clone()` de la interfaz `Cloneable`, pero en Kotlin parece que todo funciona de manera diferente. Tengo una clase de datos simple `User`: ```kotlin data class User(val name: String, var age: Int, val hobbies: MutableList) ``` Creo un objeto y quiero hacer una copia completa, para que los cambios en la copia no afecten al original. Pero cuando simplemente asigno un objeto a otro, esto crea una nueva referencia, no una copia: ```kotlin val user1 = User("Alice", 25, mutableListOf("reading", "swimming")) val user2 = user1 // ¡Esto no es una copia, sino una referencia! user2.age = 30 println(user1.age) // Imprime 30, ¡pero debería ser 25! Los cambios afectaron al original. ``` Intenté usar `copy()` para la data class, pero esto solo funciona para campos primitivos. Cuando cambio la lista `hobbies` en la copia, los cambios aún se reflejan en el original: ```kotlin val user3 = user1.copy(age = 35) user3.hobbies.add("codi