当前位置: 首页 > 面试题库 >

如何在不使用序列化的情况下制作Java对象的深层副本?

狄子真
2023-03-14
问题内容

是否可以在不使用序列化的情况下对Java对象进行深层复制/克隆?如果是这样,那又如何?


问题答案:

您可以使用Java Deep-Cloning Library制作对象的深层副本。当您无法(或不想)使您的类可序列化时,这真的很有用。用法很简单:

Cloner cloner = new Cloner();

MyClass clone = cloner.deepClone(o);
// clone is a deep-clone of o


 类似资料:
  • 问题内容: 实现深层对象复制功能有点困难。您采取什么步骤来确保原始对象和克隆对象没有引用? 问题答案: 一种安全的方法是序列化对象,然后反序列化。这样可以确保所有内容都是全新的参考。 这是有关如何有效执行此操作的文章。 注意事项:类可能会覆盖序列化,这样就不会创建新实例,例如单例。如果您的课程不是可序列化的,那么这当然也行不通。

  • 如果一封邮件被发送到我的收件箱,我会收到一条消息,并将内容插入数据库。我有一个组织。springframework。整合。果心信息如下: 现在,如果出现故障,我希望有故障安全恢复机制,我想的是将消息对象序列化到一个文件中,然后反序列化并更新到DB。 问题1。在这种情况下,如何序列化消息对象?2。除了序列化,还可以使用其他机制吗? 编辑我以前没有做过序列化,我听说类应该实现Serializable,

  • 问题内容: 这个问题已经在这里有了答案 : 9年前关闭。 可能重复: 如何克隆ArrayList并克隆其内容? 试图复制一个ArrayList。基础对象很简单,包含Strings,ints,BigDecimals,Dates和DateTime对象。如何确保对新ArrayList所做的修改不会反映在旧ArrayList中? 干杯,P 问题答案: 在添加对象之前先对其进行克隆。例如,代替 假设已正确覆

  • 我的问题是,有什么方法可以让我序列化/反序列化一个名为onlinePlayers的列表,该列表引用了“John1”的实例,它也碰巧在List allPlayers中,而不重复“John1”,同时仍然引用那个对象? 我猜当我反序列化allPlayers时,它将创建不同于原始对象的对象,所以onlinePlayers在反序列化后不可能仍然引用相同的对象。我是否应该编写一个自定义方法,在反序列化后将新创

  • 问题内容: 我想知道如何制作一个深复制。 我知道可以使用IOUtils软件包来完成,但是如果可能的话,我想避免使用它们。有谁知道替代方法? 问题答案: InputStream是抽象的,不会公开(也不公开其子级)内部数据对象。因此,“深度复制” InputStream的唯一方法是创建ByteArrayOutputStream,然后在InputStream上执行read()之后,将此数据写入()到By

  • 问题内容: 我只是想输出一个先前创建的ArrayList来序列化它,以备将来存储。 但是当我这样做时,我收到运行时错误“ notSerialisableException:部门。 他们是序列化arrayList的一种特殊方法吗? 有人可以告诉我为什么我会收到此错误。 这是代码: 问题答案: 不是问题吗?你的对象是。 您需要在该对象中实现接口。