Memory 我在java中学习了浅层克隆和深层克隆,但是克隆()的用途是什么,而不是直接使用新的

Memory 我在java中学习了浅层克隆和深层克隆,但是克隆()的用途是什么,而不是直接使用新的,memory,clone,Memory,Clone,如果我们可以使用new关键字创建实例,那么克隆方法的用途是什么?它是否保留内存?如果是,克隆如何不保存任何内存。它创建一个新对象,该对象的数据值与原始对象相同。特别是在堆中创建新字符串、整数等。克隆相当于对原始对象中的每个值使用new和构造函数 当您提到浅层克隆时,继承自Object的浅层克隆不会在新克隆项中创建对象的新实例。它获取对原始对象的引用。所以从这个角度来看,你可以说你节省了内存。但这很少是你真正想要的。这就是为什么您必须覆盖克隆并实例化(或克隆)所拥有的对象 在进行深度克隆时应该谨慎

如果我们可以使用new关键字创建实例,那么克隆方法的用途是什么?它是否保留内存?如果是,克隆如何不保存任何内存。它创建一个新对象,该对象的数据值与原始对象相同。特别是在堆中创建新字符串、整数等。克隆相当于对原始对象中的每个值使用new和构造函数

当您提到浅层克隆时,继承自Object的浅层克隆不会在新克隆项中创建对象的新实例。它获取对原始对象的引用。所以从这个角度来看,你可以说你节省了内存。但这很少是你真正想要的。这就是为什么您必须覆盖克隆并实例化(或克隆)所拥有的对象


在进行深度克隆时应该谨慎,因为如果更高级别的对象包含持久化对象,例如DAO,则可能会造成相当大的混乱。如果要处理DAO,您确实需要了解您的框架。应用程序想做什么非常重要。也许你可以实例化一个分离的对象,也许你必须再次读取数据库(也许你自己会死锁)!这完全取决于你需要什么。我认为这就是为什么lang只提供默认的浅层克隆。深度克隆您确实需要了解业务目标是什么。

克隆是现有实例的副本。一个新的实例就是那个,新的,不是副本。