我来自Swift
和Python
背景,遇到一个问题,我希望可以很容易地得到答案。
我有一个名为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
}
}
是否有更优雅,更直观的方法?
谢谢!
答案 0 :(得分:2)
您可以将具有内置data class
方法的copy
与不可变对象结合使用(因此,深层副本与浅层副本相同)。如果您不能使用不可变的对象,则只能使用问题中提出的替代方法,没有其他方法可以使用。您要记住的另一件事是Kotlin具有自己的持久数据结构here,这是解决此问题的好方法!