在Java中,clone()方法的重要性是什么?

在Java中,clone()方法的重要性是什么?

clone()方法用于创建实现Cloneable接口的类的对象副本。默认情况下,它会逐字段复制,因为 Object 类不知道其对象调用此方法的特定类的成员。因此,如果该类仅具有原始数据类型成员,则将创建该对象的新副本,并返回对新对象副本的引用。但是,如果类包含任何类类型的成员,则仅复制对这些成员的对象引用,因此原始对象和克隆对象中的成员引用都引用同一对象。

如果我们尝试对未实现 Cloneable  接口的类的对象调用 clone() 方法,我们将收到 CloneNotSupportedException  。该接口是一个标记接口,该接口的实现仅表明可以在实现类的对象上调用Object.clone()方法。

语法

protected Object clone() throws CloneNotSupportedException登录后复制

浅复制

这是Object.clone()提供的默认克隆功能的结果 方法(如果类也有非基本数据类型成员)。在浅复制的情况下,克隆对象还引用原始对象所引用的同一对象,因为仅复制对象引用,而不复制引用的对象。

示例

public class ShallowCopyTest {    public static void main(String args[]) {       A a1 = new A();       A a2 = (A) a1.clone();       a1.sb.append("Tutorialspoint!");       System.out.println(a1);       System.out.println(a2);    } } class A implements Cloneable {    public StringBuffer sb = new StringBuffer("Welcome to ");       public String toString() {          return sb.toString();       }    public Object clone() {       try {          return super.clone();       } catch(CloneNotSupportedException e) {       }       return null;    } }登录后复制