java如何使用clone
使用 clone 方法的基本步骤
在 Java 中,clone 方法用于创建对象的副本。要使用 clone 方法,需要实现 Cloneable 接口并重写 Object 类中的 clone 方法。

class MyClass implements Cloneable {
private int value;
public MyClass(int value) {
this.value = value;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
public int getValue() {
return value;
}
}
调用 clone 方法的示例
调用 clone 方法时,需要处理 CloneNotSupportedException 异常,并确保对象实现了 Cloneable 接口。

public class Main {
public static void main(String[] args) {
MyClass original = new MyClass(10);
try {
MyClass copy = (MyClass) original.clone();
System.out.println("Original value: " + original.getValue());
System.out.println("Copy value: " + copy.getValue());
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
深拷贝与浅拷贝
默认的 clone 方法是浅拷贝,即只复制对象的字段值。如果对象包含引用类型的字段,需要手动实现深拷贝。
class DeepCopyClass implements Cloneable {
private int[] array;
public DeepCopyClass(int[] array) {
this.array = array;
}
@Override
protected Object clone() throws CloneNotSupportedException {
DeepCopyClass copy = (DeepCopyClass) super.clone();
copy.array = array.clone(); // 深拷贝数组
return copy;
}
public int[] getArray() {
return array;
}
}
注意事项
- 未实现
Cloneable接口的类调用clone方法会抛出CloneNotSupportedException。 clone方法是protected,需要在子类中重写并提升为public以便外部调用。- 深拷贝需要手动处理引用类型的字段,确保副本与原对象独立。






