Avatar ·

Wie klont man ein Objekt in Kotlin? Problem mit Veränderbarkeit und Referenzen

Hallo zusammen! Ich habe gerade angefangen, Kotlin zu lernen, und bin auf ein Problem beim Klonen von Objekten gestoßen. In Java habe ich die Methode `clone()` aus dem Interface `Cloneable` verwendet, aber in Kotlin scheint alles anders zu funktionieren. Ich habe eine einfache Datenklasse `User`: ```kotlin data class User(val name: String, var age: Int, val hobbies: MutableList) ``` Ich erstelle ein Objekt und möchte eine vollständige Kopie davon machen, sodass Änderungen an der Kopie das Original nicht beeinflussen. Aber wenn ich einfach ein Objekt einem anderen zuweise, wird eine neue Referenz erstellt, keine Kopie: ```kotlin val user1 = User("Alice", 25, mutableListOf("reading", "swimming")) val user2 = user1 // Das ist keine Kopie, sondern eine Referenz! user2.age = 30 println(user1.age) // Gibt 30 aus, sollte aber 25 sein! Änderungen haben das Original betroffen. ``` Ich habe versucht, `copy()` für die data-Klasse zu verwenden, aber das funktioniert nur für primitive Felder. Wenn ich die Liste `hobbies` in der Kopie ändere, werden die Änderungen trotzdem im Original angezeigt: ```kotlin val user3 = user1.copy(age = 35) u