Java 对象克隆(Object Cloning)详解
Java 对象克隆(Object Cloning)详解
对象克隆是指创建一个对象的精确副本,Java 提供了两种克隆方式:浅克隆(Shallow Clone)和深克隆(Deep Clone)。下面从实现原理、使用场景到注意事项全面解析。
一、克隆的基本概念
1. 为什么要克隆?
- 需要对象副本时避免修改原始对象
- 比手动
new
对象并复制属性更高效(尤其复杂对象) - 保护性拷贝(Defensive Copy)的重要实现方式
2. 克隆的两种类型
类型 | 特点 | |
---|---|---|
浅克隆 | 复制基本类型值,引用类型复制地址(共享引用对象) | |
深克隆 | 完全独立的新对象,包括所有引用对象也递归克隆 |
二、实现克隆的步骤
1. 实现 Cloneable
接口
Cloneable
是标记接口(无方法),仅表示该类允许克隆- 不实现会抛
CloneNotSupportedException
2. 重写 Object.clone()
@Override
protected Object clone() throws CloneNotSupportedException {return super.clone(); // 调用Object的native方法
}
3. 完整示例(浅克隆)
class Person implements Cloneable {String name;int age;Address address; // 引用类型@Overridepublic Person clone() throws CloneNotSupportedException {return (Person) super.clone(); // 浅克隆}
}
<