java 克隆一个对象_Java对象克隆

Java对象克隆

1 什么是Java对象克隆

对象克隆是创建一个对象的副本的方式。Object类的clone() 方法用于克隆对象。

java.lang.Cloneable接口必须由我们要建立其对象克隆的类实现。如果我们不实现Cloneable接口,则clone() 方法将抛出CloneNotSupportedException异常。

clone() 方法的语法如下:

protected Object clone() throws CloneNotSupportedException

2 对象克隆的优势

clone() 方法节省了用于创建对象的副本时间。如果使用new关键字执行此操作,则将花费大量处理时间,这就是我们使用对象克隆的原因。

尽管Object.clone() 方法存在一些设计问题,但它仍然是复制对象的一种流行且简便的方法。下面列出了使用clone()方法的优点:

您无需编写冗长和重复的代码。只需将抽象类与clone() 方法一起使用。

这是复制对象的最简单,最有效的方法,尤其是当我们将其应用于旧项目时。只需定义一个父类,在其中实现Cloneable接口,提供clone() 方法的实现即可完成任务。

Clone() 是复制数组的最快方法。

3 对象克隆的劣势

下面列出了clone() 方法的一些缺点:

要使用Object.clone() 方法,我们必须更改代码的语法,例如实现Cloneable接口,定义clone() 方法和处理CloneNotSupportedException异常,最后调用Object.clone()等。

当它没有任何方法时,我们必须实现Cloneable的接口。我们只需要使用它来告诉JVM我们可以对对象执行clone() 。

Object.clone()方法是protected的,因此我们必须提供自己的clone()并调用Object.clone()。

Object.clone() 不会调用任何构造函数,因此我们无法控制对象的构造。

如果要在子类中编写一个clone方法,则其所有父类都应该定义clone()方法或从另一个父类继承该方法。否则,super.clone()方法将失败。

Object.clone() 仅支持浅复制,但如果需要深度克隆,则需要覆盖它。

4 clone()方法的例子

让我们看一下对象克隆的简单示例

package com.yiidian;

/**

* 一点教程网: http://www.yiidian.com

*/

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,"张三");

Student18 s2=(Student18)s1.clone();

System.out.println(s1.rollno+" "+s1.name);

System.out.println(s2.rollno+" "+s2.name);

}catch(CloneNotSupportedException c){

}

}

}

输出结果为:

101 张三

101 张三

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值