Object 的 clone

要用到clone()的时候,发现通过IDEA直接.的方式没出现提示,有点懵。后面在自己的类上重写了这个方法,又出现了不能clone的异常,然后给类上加上了Cloneable接口。

 

clone()是Object类的一个protected的方法。如果子类需要调用,必须显示重写,且一定要在类上实现 Cloneable接口。这个是JAVA规定的

 

该方法会在类没有实现Cloneable接口时抛出

CloneNotSupportedException


且单纯的super.clone()是一个浅拷贝。如果想做到升拷贝,可以自己实现。不过这样依赖,clone出来的到底是深拷贝还是浅拷贝容易混乱。自己写备注,或者额外写一个类单纯用来做深拷贝的实现也可以。

我知道的几个方式有:

1.自己重写一个方法,方法名叫做深拷贝,然后实现具体功能

2.通过构造方法,传入一个source,返回一个深拷贝的target

3.另起一个类,专门用于深拷贝。

 

数组的clone,可以看成是深拷贝,source和target之间的elements的元素变化,互不影响

posted on 2021-01-10 10:40  我欲皆真  阅读(146)  评论(0编辑  收藏  举报

导航