1700461823
对象拷贝时构造函数确实没有被执行,这点从原理来讲也是可以讲得通的,Object类的clone方法的原理是从内存中(具体地说就是堆内存)以二进制流的方式进行拷贝,重新分配一个内存块,那构造函数没有被执行也是非常正常的了。
1700461824
1700461825
1700461826
1700461827
1700461828
设计模式之禅 13.4.2 浅拷贝和深拷贝
1700461829
1700461830
在解释什么是浅拷贝和什么是深拷贝之前,我们先来看个例子,如代码清单13-10所示。
1700461831
1700461832
代码清单13-10 浅拷贝
1700461833
1700461834
public class Thing implements Cloneable{
1700461835
1700461836
//定义一个私有变量
1700461837
1700461838
private ArrayList<String>arrayList=new ArrayList<String>();
1700461839
1700461840
@Override
1700461841
1700461842
public Thing clone(){
1700461843
1700461844
Thing thing=null;
1700461845
1700461846
try{
1700461847
1700461848
thing=(Thing)super.clone();
1700461849
1700461850
}catch(CloneNotSupportedException e){
1700461851
1700461852
e.printStackTrace();
1700461853
1700461854
}
1700461855
1700461856
return thing;
1700461857
1700461858
}
1700461859
1700461860
//设置HashMap的值
1700461861
1700461862
public void setValue(String value){
1700461863
1700461864
this.arrayList.add(value);
1700461865
1700461866
}
1700461867
1700461868
//取得arrayList的值
1700461869
1700461870
public ArrayList<String>getValue(){
1700461871
1700461872
return this.arrayList;
[
上一页 ]
[ :1.700461823e+09 ]
[
下一页 ]