clone方法用于复制对象,需实现Cloneable接口;浅拷贝复制基本类型和引用地址,深拷贝递归复制所有对象;根据引用对象是否需独立选择深或浅拷贝。
clone方法的作用:在Java中,clone() 方法是定义在 Object 类中的一个受保护(protected)方法,用于创建并返回当前对象的一个“副本”。调用该方法可以快速复制一个对象,避免重新构造和赋值的繁琐过程。要使用 clone(),类需要实现 Cloneable 接口,否则会抛出 CloneNotSupportedException 异常。
特点:
示例:
class Person implements Cloneable {
String name;
Address address;
public Person clone() {
try {
return (Person) super.clone();
} catch (CloneNotSupportedException e) {
return null;
}
}
}
此时调用 person.clone(),新对象的 address 和原对象指向同一个 Address 实例,这就是浅拷贝。
特点:
clone() 方法,在其中对引用对象也调用 clone() 或通过其他方式创建新实例。示例:
public Person clone() {
try {
Person cloned = (Person) super.clone();
cloned.address = this.address.c
lone(); // 假设 Address 也实现了 Cloneable
return cloned;
} catch (CloneNotSupportedException e) {
return null;
}
}
这样,address 对象也被克隆,实现了深拷贝。
基本上就这些。理解 clone 的机制和深浅拷贝的区别,有助于写出更安全的对象复制逻辑。