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的元素变化,互不影响