打字猴:1.700461823e+09
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 ]  [ 下一页 ]