我正在学习how to clone serializable object。当我看到代码时,我感到困惑,为什么我们需要先overview!A4:M34
serialize
然后object
呢?是因为我们想获得deserialize
(或任何其他原因)?那么为什么我们不返回Object
或object
对象?
serialize
答案 0 :(得分:3)
Object的(简单)clone()方法执行对象的浅表副本。 这意味着原始字段被复制,但是内部的对象被复制 克隆的对象不会被复制。相反,新的内容中的引用 object指向原始对象引用的对象。这个 有时会导致意想不到的结果。有时是一份深刻的副本 对象是必需的。在深层复制中,而不是新的参考 对象指向与原始类相同的对象, 引用指向新对象(其值已被复制)。
这就是为什么深度克隆我们首先serialize
(复制原始和非原始类型对象)然后deserialize
(从字节中获取和返回对象)object
以便我们得到object
中的所有内容,而不仅仅是原始类型。
答案 1 :(得分:1)
如果object
本身被返回,则它不会是object
的克隆,它只是同一个对象,因此无法返回serialize
。
由于clone()
的返回类型为Object
且返回类型serialize()
为byte[]
,因此无法返回clone()
。
简而言之,object
方法通过调用byte
将serialize(object)
序列化为byte
数组,然后将object
数组转换为{{1}通过调用deserialize()
来实现它。它会生成new Object
,其属性与object
相同。