在Kotlin中进行深度复制

时间:2019-09-18 13:27:47

标签: kotlin deep-copy

我来自SwiftPython背景,遇到一个问题,我希望可以很容易地得到答案。

我有一个名为Event的自定义类,并且想对其进行深复制。根据相关问题(如果我理解正确的话)-Kotlin没有内置的方法可以做到这一点。有建议在Kotlin中使用Java函数,但由于我不了解Java,因此,我尽可能地采用其他方式。

一种方法是在Event类中:

fun copy() : Event {
    val event = Event()
    event.property1 = this.property1
    event.property2 = this.property2
    // and same goes for all other properties
    return event
    }
}

是否有更优雅,更直观的方法?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以将具有内置data class方法的copy与不可变对象结合使用(因此,深层副本与浅层副本相同)。如果您不能使用不可变的对象,则只能使用问题中提出的替代方法,没有其他方法可以使用。您要记住的另一件事是Kotlin具有自己的持久数据结构here,这是解决此问题的好方法!