Java克隆对象

对象克隆是创建一个对象的精确副本的方式。对象类的clone()方法被用于克隆对象。
该java.lang.Cloneable接口必须由我们要建立其对象克隆的类实现。如果我们不实现Cloneable接口,clone()方法生成CloneNotSupportedException异常。
克隆()方法在所述对象类中定义。克隆()方法的语法如下:

protected Object clone() throws CloneNotSupportedException

为什么要使用clone()方法?
该clone()方法节省了用于创建对象的精确副本额外的处理任务。如果我们使用new关键字执行它,它会主动进行大量的处理时间,这就是为什么我们使用对象的克隆。
对象克隆的优势
虽然Object.clone()有一些设计问题,但它仍然是复制对象的一种流行和简便的方法。以下是使用clone()方法的优点列表:
  • 你不需要写冗长和重复的代码。只需使用一个抽象类与4-或5-线长clone()方法。
  • 这是复制对象的最简单,最有效的方法,尤其是当我们把它应用到一个已经开发或旧的项目。只要定义一个父类,它实现Cloneable,提供clone()方法的定义和任务将完成。
  • 克隆()是复制数组的最快方法。
对象克隆的缺点
以下是)克隆的一些缺点(方法的列表:
  • 要使用Object.clone()方法,我们要了很多语法的改变我们的代码,就像实现Cloneable接口,定义clone()方法和处理CloneNotSupportedException异常,最后,调用Object.clone()等。
  • 我们必须实现可复制的接口,而它并没有在它的任何方法。我们只是用它来告诉JVM,我们可以执行的clone()我们的对象。
  • Object.clone()是受保护的,所以我们要为我们自己的clone()和间接从中调用Object.clone()。
  • Object.clone()不调用任何构造函数,所以我们并没有对对象的构造任何控制。
  • 如果你想要写一个子类,然后所有其超应该定义或从其它父类继承它在其中的clone()方法的克隆方法。否则,super.clone()来链将失败。
  • Object.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){}} }

Output:101 amit 101 amit

正如你可以在上面的例子中看到的,引用变量的值相同。因此,克隆()拷贝一个目的是另一个的值。所以我们并不需要编写显式代码到一个对象的值复制到另一个。
【Java克隆对象】如果我们通过创建新的关键字另一个对象,并指定另一个对象的值这一项,这将需要很多这样的对象上处理的。因此,为了节省额外的处理任务,我们使用clone()方法。

    推荐阅读