美文网首页
Java小技巧--clone()的妙用

Java小技巧--clone()的妙用

作者: imo浩 | 来源:发表于2017-05-21 13:01 被阅读0次

    1:为什么要使用clone()

    如果你在一个函数内需要把一个对象copy出来一份,并且在新copy出来的对象进行操作,不能影响源对象

    这个时候你应该怎么做?

    首先这样做是不对的

    Person p1 =newPerson();

    p1.setName("dog");

    p1.setAge(10);

    Person p2 = p1;

    这个时候如果你把p2的name重新set一遍,那么p1.getName()将会得到p2.setName()的值。

    因为你只是把p1的引用给了p2,在内存地址上,p2和p1指向的是同一个对象,如果想要p2既有p1对象的所有内容,又可以随便修改不影响p1,该怎么办呢?

    1:笨方法

    把p1所有的属性拿出来,new 一个p2,重新set到p2的属性内,这样因为使用了new 会重新创建一个对象。

    2:使用Java clone()方法

    2:clone在Java内的区别

    在Java内clone分为两种,一种是浅克隆,一种是深克隆

    那么什么叫浅克隆?

    浅克隆指的是只克隆对象内的基本属性,比如int long double 还有String

    String也是一个对象但是Java处理的比较特殊。

    浅克隆不会克隆对象内的对象,只会克隆此对象的引用,什么意思呢,看代码~

    那么什么叫深克隆?

    深克隆就是对对象的完克隆,包括基本类型属性和对象类型属性

    3:如何实现两种克隆

    如何实现浅克隆?

    首先要实现Cloneable接口,并且要覆盖object的clone方法,(object的克隆方法是protected)

    如何实现深克隆?

    1:首先引用对象内必须实现浅克隆

    2:必须在要实现深克隆的对象内,把引用对象设置为引用对象的clone方法返回的对象,代码如下

    相关文章

      网友评论

          本文标题:Java小技巧--clone()的妙用

          本文链接:https://www.haomeiwen.com/subject/onwmxxtx.html