深入克隆(复制)可变Scala对象的最简单方法是什么?
深入克隆(复制)可变Scala对象的最简单方法是什么?一个Java特定的解决方案(在Scala中也应该很有用)是。它快速、简单、基于字段深度克隆对象(使用反射),并且足够聪明,不会克隆已知的不可变对象(如字符串、整数等)。最后,您可以注册自定义的不可变对象,这样它也不会克隆它们深入克隆(复制)可变Scala对象的最简单方法是什么?,scala,clone,Scala,Clone,深入克隆(复制)可变Scala对象的最简单方法是什么?一个Java特定的解决方案(在Scala中也应该很有用)是。它快速、简单、基于字段深度克隆对象(使用反射),并且足够聪明,不会克隆已知的不可变对象(如字符串、整数等)。最后,您可以注册自定义的不可变对象,这样它也不会克隆它们 我强烈推荐它。因为您想要的是最简单的深度复制Scala对象的方法,而不是最快的方法,所以只要对象是可序列化的,就可以将其序列化,然后再反序列化回来。以下代码仅在编译时运行,而不是在REPL中运行 def deepCopy
我强烈推荐它。因为您想要的是最简单的深度复制Scala对象的方法,而不是最快的方法,所以只要对象是可序列化的,就可以将其序列化,然后再反序列化回来。以下代码仅在编译时运行,而不是在REPL中运行
def deepCopy[A](a: A)(implicit m: reflect.Manifest[A]): A =
util.Marshal.load[A](util.Marshal.dump(a))
val o1 = new Something(...) // "Something" has to be serializable
val o2 = deepCopy(o1)
我第一次听说克隆人图书馆。听起来很方便!谢谢你提到克隆人图书馆。在我的spark scala代码中工作得很有魅力。我做了一点,但我一直得到ClassNotFoundException(并且case类是可序列化的)。