欢迎来到天天文库
浏览记录
ID:38179363
大小:37.50 KB
页数:3页
时间:2019-05-24
《Java对象的复制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、金桥重要补充资料Java对象的复制Java.lang.Object.clone()方法 Java的所有类都是从java.lang.object类继承而来,而Object类提供下面的方法对对象进行复制:ProtectedObject clone()子类当然也可以把方法置换掉,提供满足自己的复制方法。对象的复制有一个基本问题,就是对象通常都有对其它对象的引用。当使用Object类的clone()方法来复制一个对象时,此对象对其它对象的引用也可同时会被复制一份。Java语言提供的Cloneablb接口只起一个作用,就是在运行时期通知jav
2、a虚拟机可以安全地这个类上使用clone()方法。通过调用这个clone()方法可以得到一个对象的复制。由于Object类本身并不实现Cloneable接口,因此如果所考虑的类没有实现Cloneablb接口时,调用clone()方法会抛出CloneNotSupportedException异常。 系统可以在pandToClone里面置换掉java.lang.Object提供的clone()方法,以便控制复制的过程。在下面的例子里,pandaToClone是一个带有几个性质的类,它将java.lang.Object类的克隆方法置换掉
3、了,由一个新的clone()方法提供复制自己实例的任务,如代码清单1所示。代码清单1:pandaTOlone类的源代码class PandaToCloneimplementsCloneablb{privateintheight,weight,age;*构造子publicpandaToClone(intheight,intweight){this.age=0;this.weight=weight;this.height=height;}/***年龄的贬值方法*/publicvoidsetAge(intage){thia.age=age
4、;}/***年龄的取值方法*/publicintgetAge(){returnaga;}/***身高的取值方法*/publicintgetHeight()-3-金桥重要补充资料{/***体重的取值方法*/publicintgetWeight(){returnweight;}/***克隆方法*/publicObjectclone(){//创建一个本类的对象,并返还给调用者pandaToClonetemp=newpandaToClone(height,weight);temp.setAge(age);//注意返还值的类型必须是Objec
5、tretun(Object)temp;}}客户端的源代码如代码清单2所示。代码清单2:客户端的源代码publicclassCient{publicstaticvoidmain(Sting[]args){thispanda=newpandaToCone(15,25);thispanda.setAge(3);//Createthesecondobjectbycloningthefirstthatpanda=(pandaToClone)thispanda.clone();//Nowdescribetheseobjectsonthesyst
6、emconsole:System.out.println(“Ageofthispanda:”+thispanda.getAge());System.out.prntln(“height:”+thispanda.geHeight());System.out.println(“weight:”+thispanda.getWeight());System.out.println(“Ageofthatpanda:”+thatpanda.getAge())”System.out.println(“height:”+thatpanda.getH
7、eight());System.out.printhn(“weight:”+thatpanda.getWeight());}}在运行时,客户端首先创建了一个pandaTClone的实例,并且给各个性质赋值。然后将此对象复制一份。系统运行的结果如代码清单3所示。 代码清单3:运行的结果Ageofthispanda:3Height:15Weight:25Ageofthatpanda:3-3-金桥重要补充资料Heiget:15Weight:25运行的结果可以看出,克隆对象与原对象的性质是完全一样的。client对象持有一个pandaTCo
8、ne对象的引用,而后client对象调用pandaToCone.clone()方法得到一份复制后的对象。这其实就是原始模型模式。clone()方法要满足以下条件:clone()方法将对象复制了一份并返还给调用者。所谓“复制”的含义与c
此文档下载收益归作者所有