Avatar ·

كيفية استنساخ كائن في Kotlin؟ مشكلة التعديل والمراجع

مرحباً بالجميع! لقد بدأت للتو في تعلم Kotlin وواجهت مشكلة عند استنساخ الكائنات. في Java كنت أستخدم طريقة `clone()` من واجهة `Cloneable`، ولكن في Kotlin يبدو أن الأمور تعمل بشكل مختلف. لدي فئة بيانات بسيطة `User`: ```kotlin data class User(val name: String, var age: Int, val hobbies: MutableList) ``` أقوم بإنشاء كائن وأريد عمل نسخة كاملة منه، بحيث لا تؤثر التعديلات في النسخة على الأصل. ولكن عندما أقوم ببساطة بتعيين كائن إلى آخر، فإن ذلك ينشئ مرجعاً جديداً وليس نسخة: ```kotlin val user1 = User("Alice", 25, mutableListOf("reading", "swimming")) val user2 = user1 // هذه ليست نسخة، بل مرجع! user2.age = 30 println(user1.age) // يطبع 30، بينما يجب أن يكون 25! التعديلات أثرت على الأصل. ``` لقد جربت استخدام `copy()`