Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 科特林的深度复制_Kotlin_Deep Copy - Fatal编程技术网

Kotlin 科特林的深度复制

Kotlin 科特林的深度复制,kotlin,deep-copy,Kotlin,Deep Copy,我来自Swift和Python的背景,我有一个问题,我希望得到一个简单的答案 我有一个名为Event的自定义类,希望对其进行深度复制。从相关的问题(如果我理解正确的话)-在Kotlin中没有内在的方法来做到这一点。有人建议在Kotlin中使用Java函数,但由于我不懂Java,如果可能的话,我更喜欢用另一种方式 一种方法是在事件类中: fun copy() : Event { val event = Event() event.property1 = this.property1

我来自
Swift
Python
的背景,我有一个问题,我希望得到一个简单的答案

我有一个名为
Event
的自定义类,希望对其进行深度复制。从相关的问题(如果我理解正确的话)-在Kotlin中没有内在的方法来做到这一点。有人建议在Kotlin中使用Java函数,但由于我不懂Java,如果可能的话,我更喜欢用另一种方式

一种方法是在
事件
类中:

fun copy() : Event {
    val event = Event()
    event.property1 = this.property1
    event.property2 = this.property2
    // and same goes for all other properties
    return event
    }
}
有没有更优雅、更直观的方法


提前谢谢

您可以将具有内置
copy
方法的
数据类
与不可变对象结合使用(因此深拷贝与浅拷贝相同)。如果您不能使用不可变对象,那么您就只能使用问题中提出的备选方案,没有其他方法可以这样做。您可以记住的另一件事是Kotlin有自己的持久数据结构,这是解决此问题的一个很好的方法

嗨,亚当,谢谢你的回答。是的,我需要使用可变对象,但是非常感谢您提到这个库-我不知道它,并且一定会研究它!我已经使用这个库有一段时间了,它太棒了!