Avatar ·

Como clonar um objeto em Kotlin? Problema com mutabilidade e referências

Olá a todos! Comecei a estudar Kotlin recentemente e me deparei com um problema ao clonar objetos. Em Java, eu usava o método `clone()` da interface `Cloneable`, mas em Kotlin parece que tudo funciona de forma diferente. Tenho uma classe de dados simples `User`: ```kotlin data class User(val name: String, var age: Int, val hobbies: MutableList) ``` Crio um objeto e quero fazer uma cópia completa dele, para que as alterações na cópia não afetem o original. Mas quando simplesmente atribuo um objeto a outro, isso cria uma nova referência, não uma cópia: ```kotlin val user1 = User("Alice", 25, mutableListOf("reading", "swimming")) val user2 = user1 // Isso não é uma cópia, é uma referência! user2.age = 30 println(user1.age) // Imprime 30, mas deveria ser 25! As alterações afetaram o original. ``` Tentei usar `copy()` para a classe de dados, mas isso funciona apenas para campos primitivos. Quando altero a lista `hobbies` na cópia, as mudanças ainda aparecem no original: ```kotlin val user3 = user1.copy(age = 35) u