我在网上看到了几个教程,其中序列化和后续反序列化用于在Java中实现深度克隆。 我的感觉是,这是一个快速实施的解决方案,因此广泛存在但可能有我当前看不到的警告。
这是实现clone()
好风格的方式吗?它不慢吗?深刻克隆真的应该这样做吗?还有哪些更好的方法?
答案 0 :(得分:1)
使用Java实现克隆方法是Java的好习惯吗? 序列
如果使用序列化来克隆对象,则必须对序列化对象进行反序列化以创建克隆对象。它会产生两个操作,其中第二个似乎是一个开销,因为如果你手头或使用mapper API实现克隆操作(例如:SpringBean,Common apache,ModelMapper,Dozzer ......),它就不应该执行。(br / >
所以它毫无疑问会对性能产生影响。如果你偶尔进行这种处理,我不认为这应该是一个问题(即使它似乎是一个无用的开销,你有其他方法)但如果你经常使用它我认为它可能有成本。
此外,为什么通过使用序列化来实现Clonable
克隆对象而不是忘记Cloneable
这是一个笨拙的API并直接使用deserialization
机制?