什么是在Java中克隆对象的需要

我正在阅读有关Java中的克隆,如何制作对象的浅/深副本等。

我想知道为什么我需要在Java中创建对象克隆? 任何实时示例都有助于理解。

通常,您希望使用不可变对象,在这种情况下,克隆是代码的重要组成部分。 例如,如果您有一个具有列表或数组类型字段的不可变对象,则getter应始终返回列表或数组的克隆以保留不变性。

另一个典型的用例是当你想要“事务”修改时,当你调用几个状态改变方法但只希望结果在所有方法都成功时可见。

拥有克隆的东西副本意味着您可以拥有“之前”和“之后”版本。 当您使用副本测试某些内容时,您可以单独保留原始内容。 您只需还原为原始版本即可提供撤消操作。

克隆的一个具体例子是: 原型设计模式

因为Cloning本身就说了一些重复的副本,所以在Java中我们说克隆对象意味着创建或拥有另一个相同的现有对象。

当我们做克隆? 当我们看到每次创建新对象都很耗时,或者我们需要新对象具有相同或微小的差异时所有准备好的对象,那么我们就使用克隆。

克隆在java中有3种类型

  • 浅拷贝
  • 深拷贝
  • 克隆

浅拷贝

浅复制是将对象的状态复制到另一个对象的过程,但这两个对象都指向堆区域中的相同引用。

深拷贝

在深层复制中,创建了两个单独的对象并进行深层复制。 在此,一个对象的每个字段都被复制到另一个对象。

现在克服这个难度的第三类是java的克隆概念。

java中的克隆是通过implements Cloneable接口完成的。 可克隆是标记界面。

有关克隆的更深入知识请参阅: 在Java中克隆

您可以使用对象的深度克隆副本,因为您可能需要某种方法的部分结果,以后再使用。

作为一种帮助保护包容(并因此使代码更健壮)的方法,您可以在从getter返回它们之前克隆对象。 例如,getDate方法可能会在返回调用方之前克隆日期字段。