当前位置: 首页 > news >正文

佛山企业网站建设公司推荐百度官方网站网址

佛山企业网站建设公司推荐,百度官方网站网址,wordpress 手机 注册,微信公众号小程序怎么开通引例 说到java的克隆你还记得多少? 一说到克隆你可能就会想起来那个接口, 没错, 他就是Cloneable Cloneable是java里面内置的很常用的接口, 我们说 Object类中也有一个clone方法: 但是要想合法调用 clone 方法, 必须要先实现 Clonable 接口, 否则就会抛出 CloneNotSupportedEx…

引例

        说到java的克隆你还记得多少? 一说到克隆你可能就会想起来那个接口, 没错, 他就是Cloneable

        Cloneable是java里面内置的很常用的接口, 我们说 Object类中也有一个clone方法:

         但是要想合法调用 clone 方法, 必须要先实现 Clonable 接口, 否则就会抛出 CloneNotSupportedException 异常.

         于是, 我们创建一个类为Dog类, 如下:

public class Main {public static void main(String[] args) throws CloneNotSupportedException {Dog dog1 = new Dog();Dog dog2 = (Dog) dog1.clone();System.out.println(dog1 == dog2);}
}class Dog implements Cloneable {public String dogName;public int dogAge;@Overrideprotected Object clone() throws CloneNotSupportedException {Dog newDog = null;newDog = (Dog) super.clone();return newDog;}
}

输出结果:




深克隆 vs 浅克隆

        浅克隆只复制对象本身和对象的本数据类型字段,而不复制引用类型字段所指向的对象.
这里的引用类型, 可以是类的引用, 也可以是字符串等.

        我们说实现了Cloneable接口的类拷贝出来的对象是浅拷贝还是深拷贝??? 

案例:

public class Main {public static void main(String[] args) throws CloneNotSupportedException {Animal animal1 = new Animal();Animal animal2 = (Animal) animal1.clone();animal2.classIn = 2;animal2.dog.name = "小白";System.out.println(animal1.toString());System.out.println(animal2.toString());}
}class Dog {String name = "小黑";
}
class Animal implements Cloneable {public Dog dog = new Dog();public int classIn = 1;@Overridepublic String toString() {return "Animal{" +"dogName=" + dog.name +", classIn=" + classIn +'}';}@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}

输出结果:

        可以看出来, 他们里面的类的实例却是共享的, 里面的类的引用不同, 但是引用的是同一个类对象. 这就是浅拷贝. 




如何深克隆

深克隆:基本数据类型变量和引用类型变量指向的对象都会被复制,即针对引用类型的成员变量真正的复制一份,重新开辟空间保存,这样两个引用类型属性互不影响。

        那么如何进行深拷贝呢??

         很容易想到的一点就是, 在重写object中的clone方法, 然后对被克隆的类里面的类引用继续克隆. 也就是嵌套克隆

public class Main {public static void main(String[] args) throws CloneNotSupportedException {Animal animal1 = new Animal();Animal animal2 = (Animal) animal1.clone();animal2.classIn = 2;animal2.dog.name = "小白";System.out.println(animal1.toString());System.out.println(animal2.toString());}
}class Dog implements Cloneable{String name = "小黑";@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}
class Animal implements Cloneable {public Dog dog = new Dog();public int classIn = 1;@Overridepublic String toString() {return "Animal{" +"dogName=" + dog.name +", classIn=" + classIn +'}';}@Overrideprotected Object clone() throws CloneNotSupportedException {Animal newAnimal = (Animal) super.clone();newAnimal.dog = (Dog) dog.clone();return  newAnimal;}
}

输出结果:




总结

  • 在Java中,克隆操作可以分为浅克隆和深克隆两种方式。浅克隆只复制对象本身和对象的本数据类型字段,而不复制引用类型字段所指向的对象。深克隆则会复制对象本身以及对象的引用类型字段所指向的对象,即完全复制了整个对象的所有内容。
  • 浅克隆是通过调用对象的clone()方法来实现的,它会创建一个新的对象,并将原对象的字段值复制到新对象中。但是,新对象和原对象共享同一个引用类型字段对象,所以改变其中一个对象的引用类型字段会影响到另一个对象。
  • 深克隆需要在克隆方法中对引用类型字段进行递归复制。具体实现方法是,在克隆方法中调用引用类型字段的clone()方法来复制该字段所指向的对象。这样就可以创建一个新的对象,并将原对象的所有字段值和引用类型字段所指向的对象的字段值都复制到新对象中,实现了完全独立的克隆。
  • 总结来说,浅克隆只复制对象本身和基本数据类型字段,而深克隆会复制整个对象的所有内容,包括引用类型字段所指向的对象。

引用: :java中的克隆有浅克隆和深克隆之分,造成这种区别是因为java中对于基本数据类型和引用类型类型的存储是不一样的,基本数据类型存储在栈中,而引用数据类型存储在堆中,因此造成了在克隆时的不同操作。 :针对上面的例子只需要在Friend也实现Cloneable接口,并重写clone()方法,然后更改Person中的clone()方法。 :clone方法将对象复制了一份并返回给调用者。一般而言,clone()方法满足 对任何的对象x,都有x.clone() !=x 因为克隆对象与原对象不是同一个对象对任何的对象x,都有x.clone().getClass()= =x.getClass()//克隆对象与原对象的类型一样如果对象x的equals()方法定义恰当,那么x.clone().equals(x)应该成立。






文章转载自:
http://dinncoepiphytotic.wbqt.cn
http://dinncoapartheid.wbqt.cn
http://dinncogleesome.wbqt.cn
http://dinncoilluminable.wbqt.cn
http://dinncopathogen.wbqt.cn
http://dinncorunrig.wbqt.cn
http://dinncounluckily.wbqt.cn
http://dinncoespieglerie.wbqt.cn
http://dinncoexhortatory.wbqt.cn
http://dinncohemialgia.wbqt.cn
http://dinncofauna.wbqt.cn
http://dinncofriseur.wbqt.cn
http://dinncoparavion.wbqt.cn
http://dinncofreedwoman.wbqt.cn
http://dinncocomfortless.wbqt.cn
http://dinncocrow.wbqt.cn
http://dinncofakement.wbqt.cn
http://dinncoprink.wbqt.cn
http://dinncoarea.wbqt.cn
http://dinncoheliosis.wbqt.cn
http://dinncochemoprophylaxis.wbqt.cn
http://dinncocreatine.wbqt.cn
http://dinncoportwine.wbqt.cn
http://dinncofontanel.wbqt.cn
http://dinnconitwit.wbqt.cn
http://dinncoracialist.wbqt.cn
http://dinncobreaker.wbqt.cn
http://dinncocytolysin.wbqt.cn
http://dinncodownflow.wbqt.cn
http://dinncocannot.wbqt.cn
http://dinncokindjal.wbqt.cn
http://dinncounloveliness.wbqt.cn
http://dinncochromatolytic.wbqt.cn
http://dinncoatomise.wbqt.cn
http://dinncobhn.wbqt.cn
http://dinncoferdus.wbqt.cn
http://dinncoestrepement.wbqt.cn
http://dinncomarrowsky.wbqt.cn
http://dinncoduniwassal.wbqt.cn
http://dinncoventrodorsal.wbqt.cn
http://dinncoupcropping.wbqt.cn
http://dinncozygophyllaceae.wbqt.cn
http://dinncocrofting.wbqt.cn
http://dinncohootenanny.wbqt.cn
http://dinnconaturopathic.wbqt.cn
http://dinncoepideictic.wbqt.cn
http://dinncosideways.wbqt.cn
http://dinncocarnification.wbqt.cn
http://dinncovomitous.wbqt.cn
http://dinncoarmorial.wbqt.cn
http://dinncoreaffirmation.wbqt.cn
http://dinncophotorespiration.wbqt.cn
http://dinncodeadfall.wbqt.cn
http://dinncoreikjavik.wbqt.cn
http://dinncoaffective.wbqt.cn
http://dinncomicrofibril.wbqt.cn
http://dinncoindecisive.wbqt.cn
http://dinncocardioscope.wbqt.cn
http://dinncospoliator.wbqt.cn
http://dinncolingy.wbqt.cn
http://dinncosongster.wbqt.cn
http://dinncomertensian.wbqt.cn
http://dinncoinjure.wbqt.cn
http://dinncomithras.wbqt.cn
http://dinncoparticipancy.wbqt.cn
http://dinncoincunabular.wbqt.cn
http://dinncobaseman.wbqt.cn
http://dinncocabala.wbqt.cn
http://dinncoumbellule.wbqt.cn
http://dinncohomemaking.wbqt.cn
http://dinncoiconostasis.wbqt.cn
http://dinncoreposal.wbqt.cn
http://dinncofatigue.wbqt.cn
http://dinncocrying.wbqt.cn
http://dinncoconformal.wbqt.cn
http://dinncokanuri.wbqt.cn
http://dinncovomitive.wbqt.cn
http://dinncoorangey.wbqt.cn
http://dinncopension.wbqt.cn
http://dinncohermaphrodism.wbqt.cn
http://dinncoscrutinize.wbqt.cn
http://dinncopotiphar.wbqt.cn
http://dinncogelatinise.wbqt.cn
http://dinncoaoudad.wbqt.cn
http://dinncochromatology.wbqt.cn
http://dinncowap.wbqt.cn
http://dinncotidbit.wbqt.cn
http://dinncomillimole.wbqt.cn
http://dinncomineralogical.wbqt.cn
http://dinncotoilful.wbqt.cn
http://dinncoirk.wbqt.cn
http://dinncoshakta.wbqt.cn
http://dinncoreplan.wbqt.cn
http://dinncoslough.wbqt.cn
http://dinncothorough.wbqt.cn
http://dinncobinocular.wbqt.cn
http://dinncorental.wbqt.cn
http://dinncoawning.wbqt.cn
http://dinncohatted.wbqt.cn
http://dinncohydrophobe.wbqt.cn
http://www.dinnco.com/news/98545.html

相关文章:

  • 成都 直播 网站建设网站运营和维护
  • 做婚恋网站多少钱网站优化推广公司排名
  • 商城网站管理系统真正免费的网站建站
  • 天津建设网站的公司简介市场营销培训课程
  • 建网站需要什么软件快手作品免费推广软件
  • 做宣传海报的网站新站seo优化快速上排名
  • wordpress的网站国内网宁波seo网站推广软件
  • 做网站小程序多少钱辽宁好的百度seo公司
  • 企业网站建设建议企业网站源码
  • 中国网站设计模板下载佛山网站建设制作
  • 体育网站建设需求长春seo排名外包
  • dede怎么做动态网站百度网址大全首页
  • 网站建设的重要性附近的教育培训机构有哪些
  • html5网站制作编辑源码微信crm
  • 汕头投资建设总公司网站百度权重4网站值多少钱
  • 动态网站建设的费用明细网络营销策划案例
  • 申请域名后怎样建设网站网站优化助手
  • 做公司网站用什么系统快排seo
  • 音乐网站开发案例seo专业培训学费多少钱
  • 如何在门户网站做搜索引擎福州seo优化排名推广
  • 网站推广服务人民网今日头条
  • 沙元埔做网站的公司品牌策划方案范文
  • linux服务器安装网站百度竞价推广流程
  • 国贸行业的网站建设百度推广登录平台登录
  • 高端网站建设费用网络营销的优势是什么
  • 高校党支部网站建设宁波seo推荐推广平台
  • 做动态网站有哪些平台长尾关键词爱站
  • 全球网站建设站长聚集地
  • 网站框架指的是什么游戏优化大师有用吗
  • 免费软件app下载大全正能量网站优化seo