克隆可序列化对象 - JAVA

时间:2015-08-05 06:34:21

标签: java serialization

我正在学习how to clone serializable object。当我看到代码时,我感到困惑,为什么我们需要先overview!A4:M34 serialize然后object呢?是因为我们想获得deserialize(或任何其他原因)?那么为什么我们不返回Objectobject对象?

serialize

2 个答案:

答案 0 :(得分:3)

Source

  

Object的(简单)clone()方法执行对象的浅表副本。   这意味着原始字段被复制,但是内部的对象被复制   克隆的对象不会被复制。相反,新的内容中的引用   object指向原始对象引用的对象。这个   有时会导致意想不到的结果。有时是一份深刻的副本   对象是必需的。在深层复制中,而不是新的参考   对象指向与原始类相同的对象,   引用指向新对象(其值已被复制)。

这就是为什么深度克隆我们首先serialize(复制原始和非原始类型对象)然后deserialize(从字节中获取和返回对象)object以便我们得到object中的所有内容,而不仅仅是原始类型。

答案 1 :(得分:1)

如果object本身被返回,则它不会是object的克隆,它只是同一个对象,因此无法返回serialize

由于clone()的返回类型为Object且返回类型serialize()byte[],因此无法返回clone()

简而言之,object方法通过调用byteserialize(object)序列化为byte数组,然后将object数组转换为{{1}通过调用deserialize()来实现它。它会生成new Object,其属性与object相同。