📅  最后修改于: 2020-09-24 00:36:46             🧑  作者: Mango
对象克隆是一种创建对象的精确副本的方法。Object类的clone()方法用于克隆对象。
java.lang.Cloneable接口必须由我们要创建其对象克隆的类实现。如果我们不实现Cloneable接口,则clone()方法将生成CloneNotSupportedException。
clone()方法在Object类中定义。clone()方法的语法如下:
protected Object clone() throws CloneNotSupportedException
clone()方法节省了用于创建对象的精确副本的额外处理任务。如果使用new关键字执行此操作,则将花费大量处理时间,这就是我们使用对象克隆的原因。
尽管Object.clone()存在一些设计问题,但是它仍然是复制对象的一种流行且简便的方法。以下列出了使用clone()方法的优点:
以下列出了clone()方法的一些缺点:
让我们看一下对象克隆的简单示例
class Student18 implements Cloneable{
int rollno;
String name;
Student18(int rollno,String name){
this.rollno=rollno;
this.name=name;
}
public Object clone()throws CloneNotSupportedException{
return super.clone();
}
public static void main(String args[]){
try{
Student18 s1=new Student18(101,"amit");
Student18 s2=(Student18)s1.clone();
System.out.println(s1.rollno+" "+s1.name);
System.out.println(s2.rollno+" "+s2.name);
}catch(CloneNotSupportedException c){}
}
}
如上例所示,两个引用变量具有相同的值。因此,clone()将一个对象的值复制到另一个对象。因此,我们无需编写显式代码即可将一个对象的值复制到另一个对象。
如果我们通过new关键字创建另一个对象,并将另一个对象的值分配给该对象,则将需要对该对象进行大量处理。因此,为了节省额外的处理任务,我们使用clone()方法。