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
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs
Arbeiten mit dem Dateisystem in C#: Vollständiger Leitfaden
Testabdeckung in Rust: Von Null zu Sicherheit
Go und Serverless: Wie man AWS Lambda-Funktionen schreibt, um die Python-Entwickler neidisch zu machen
Metaprogrammierung in PHP: Code-Magie für Profis