我需要克隆我创建的对象(自定义类)。 使用标准object.clone克隆它会很麻烦,因为它包含对其他对象的引用,它也需要我克隆它们。
我读到克隆它的一种方法是序列化对象,然后对其进行反序列化。
这是个好主意吗?
答案 0 :(得分:1)
您需要注意序列化会增加开销,与直接克隆相比,这是一个巨大的开销。您还必须确保您的类的每个成员(以及每个字段的每个成员,......)都需要可序列化。我更希望添加一个适当的clone()实现。
答案 1 :(得分:1)
你写道:
使用标准克隆它 object.clone因为它会很混乱 包括对其他对象的引用 它需要我克隆那些 太
当您通过序列化进行克隆时,您可以
在后一种情况下,您可以实现一个clone()
方法,将其他对象留下。
除了序列化的成本,TANSTAAFL
答案 2 :(得分:0)
通常,序列化用于将对象发送到某个地方(进入文件或通过网络),以便其他人可以在以后重建它们。但你可以滥用它来立即自己重建物体。如果对象完全可序列化,则重建应该是忠实的副本。
但是这种技术不能掉以轻心。首先,序列化非常昂贵。它可能比clone()方法贵一百倍。其次,并非所有对象都是可序列化的。第三,使类可序列化是棘手的,并非所有类都可以依赖它来使它正确。 (你可以假设系统类是正确的。)所以我认为这不是一个好主意。