使用序列化克隆Android对象

时间:2011-04-27 09:56:01

标签: android serialization clone

我需要克隆我创建的对象(自定义类)。 使用标准object.clone克隆它会很麻烦,因为它包含对其他对象的引用,它也需要我克隆它们。

我读到克隆它的一种方法是序列化对象,然后对其进行反序列化。

这是个好主意吗?

3 个答案:

答案 0 :(得分:1)

您需要注意序列化会增加开销,与直接克隆相比,这是一个巨大的开销。您还必须确保您的类的每个成员(以及每个字段的每个成员,......)都需要可序列化。我更希望添加一个适当的clone()实现。

答案 1 :(得分:1)

你写道:

  

使用标准克隆它   object.clone因为它会很混乱   包括对其他对象的引用   它需要我克隆那些   太

当您通过序列化进行克隆时,您可以

  • 也需要序列化其他对象(否则生成的对象不是真正的克隆)
  • 接受克隆将是部分的(没有引用的对象)。

在后一种情况下,您可以实现一个clone()方法,将其他对象留下。

除了序列化的成本,TANSTAAFL

答案 2 :(得分:0)

通常,序列化用于将对象发送到某个地方(进入文件或通过网络),以便其他人可以在以后重建它们。但你可以滥用它来立即自己重建物体。如果对象完全可序列化,则重建应该是忠实的副本。

但是这种技术不能掉以轻心。首先,序列化非常昂贵。它可能比clone()方法贵一百倍。其次,并非所有对象都是可序列化的。第三,使类可序列化是棘手的,并非所有类都可以依赖它来使它正确。 (你可以假设系统类是正确的。)所以我认为这不是一个好主意。