克隆是原始副本的精确副本。在 java 中,它实质上意味着能够创建与原始对象具有类似状态的对象。克隆() 方法提供此功能。
浅副本尽可能少地重复。默认情况下,java 克隆是浅拷贝或"按字段复制字段",即 Object 类不知道将调用克隆()方法的类的结构。因此,JVM当要求克隆时,做以下的事情:
1) 如果类只有基元数据类型成员,则将创建对象的全新副本,并返回对新对象副本的引用。
2) 如果类包含任何类类型的成员,则仅复制对这些成员的对象引用,因此原始对象和克隆对象中的成员引用引用同一对象。
深层副本复制了所有内容。集合的深层副本是两个集合,原始集合中的所有元素都重复。在这里,我们希望克隆独立于原始克隆,并且对克隆进行更改不应影响原始克隆。
深度克隆要求满足以下规则。
无需单独复制基元。 原始类中的所有成员类都应支持克隆,上下文中原始类的克隆方法应在所有成员类上调用 super.clone()。 如果任何成员类不支持克隆,那么在克隆方法中,必须创建该成员类的新实例,并逐个将其所有属性复制到新成员类对象。此新成员类对象将在克隆对象中设置。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。