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