使用序列化实现克隆方法是Java的好习惯吗?

时间:2017-01-17 13:37:16

标签: java serialization clone

我在网上看到了几个教程,其中序列化和后续反序列化用于在Java中实现深度克隆。 我的感觉是,这是一个快速实施的解决方案,因此广泛存在但可能有我当前看不到的警告。

这是实现clone()好风格的方式吗?它不慢吗?深刻克隆真的应该这样做吗?还有哪些更好的方法?

1 个答案:

答案 0 :(得分:1)

  

使用Java实现克隆方法是Java的好习惯吗?   序列

如果使用序列化来克隆对象,则必须对序列化对象进行反序列化以创建克隆对象。它会产生两个操作,其中第二个似乎是一个开销,因为如果你手头或使用mapper API实现克隆操作(例如:SpringBean,Common apache,ModelMapper,Dozzer ......),它就不应该执行。(br / > 所以它毫无疑问会对性能产生影响。如果你偶尔进行这种处理,我不认为这应该是一个问题(即使它似乎是一个无用的开销,你有其他方法)但如果你经常使用它我认为它可能有成本。

此外,为什么通过使用序列化来实现Clonable克隆对象而不是忘记Cloneable这是一个笨拙的API并直接使用deserialization机制?