Java编程中经常会用到clone()方法,clone()方法是Object类的一个protected的方法,由于非静态所以不能直接调用,但是可以被子类调用。Object类的clone()方法会知道对象大小,为其分配足够的内存空间,并将其对象的内容复制到新的对象中。但是,clone()方法在执行其动作之前必须先检查class是否实现了Cloneable接口。Cloneable接...
如果没有implements Cloneable的类调用Object.clone()方法就会抛出CloneNotSupportedException。 二.克隆的分类 (1)浅克隆(shallow clone),浅拷贝是指拷贝对象时仅仅拷贝对象本身和对象中的基本变量,而不拷贝对象包含的引用指向的对象。 (2)深克隆(deep clone),深拷贝不仅拷贝对象本身,而且拷贝对象包含的引用指向的...
一、clone的用法: packagechatRoom.F5;classPersonimplementsCloneable{//1.publicStringname;publicPerson(Stringname){this.name=name;}//2.protectedPersonclone()throwsCloneNotSupportedException{return(Person)super.clone();//重写Object类的clone}}//clone(): 复制对象。publicclassCloneDemo{publicstaticvoidmain(...
packageJDKSource.lang;publicclassCloneDemo1implementsCloneable{privateintnum;privateStringname;privateHelperhelper;publicCloneDemo1(){}publicintgetNum(){returnnum;}publicvoidsetNum(intnum){this.num=num;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicHelpergetHelpe...
浅克隆(shallow clone)和深克隆(deep clone)是两种不同的对象复制方法。 浅克隆会创建一个新对象,然后将原始对象的所有字段复制到新对象中。如果字段是基本类型,则它们的值将被直接复制。如果字段是引用类型,则只会复制引用,而不会复制引用指向的对象。这意味着原始
如果需要实现深拷贝(Deep Copy),也就是复制对象及其引用的所有对象,就需要在clone()方法中手动实现对其他对象的克隆操作。 下面请看例子: 浅克隆 publicclassCloneClassExampleimplementsCloneable{/*** 字符串*/privateStringstr;/*** Map 对象*/privateMap<String,String>map;publicCloneClassExample(Stringstr,Map<...
在Java中,clone是一种对象的复制操作,通过clone可以创建另一个对象,新对象与原对象具有相同的属性值,但是它们是两个独立的对象,修改其中一个对象的属性不会影响到另一个对象。 Java实现clone的三个步骤 实现clone操作需要三个步骤,分别是: 实现Cloneable接口 ...
clone()方法的约定 Cloneable接口的目的是作为对象的一个混合接口,表明这样的对象允许克隆(clone),但是这个接口却没有定义clone(),这是它的缺陷:无法约束子类实现clone()方法。Object定义了一个受保护的clone()方法。Cloneable虽然没有定义clone()方法,但是却影响了Object.clone()方法的行为:如果一个类实现了Cloneable...
clone 在第一步 和new 相似,都是分配内存,调用clone 方法时,分配的内存和原对象(调用clone方法的原对象),然后再使用对象中对应的各个域,填充新的对象的域,填充完成后,clone 方法返回,一个新的相同的对象被创建,同样可以把新的对象那个的引用发布到外部。
Java ArrayList clone() 方法 Java ArrayList clone() 方法用于拷贝一份动态数组,属于浅拷贝。 拓展: 浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存, 所以如果其中一个对象改变了这个地址,就会影响到另一个对象。。 浅拷贝对应