我的意思是,如果一个ArrayList包含一个HashMap和若干对象,clone方法是不是把所有对象都建立新的对象,意思就是,不光clone外壳,内部的所有对象全部clone???

解决方案 »

  1.   

    不会进行深度clone,比如有一个类,里面有一个arrayList,然后我们对这个类进行clone,这时两个类里的arrayList实际上指向同一对象,改变其中一个,另一个随之而改变,
      

  2.   

    天哪,这太可怕了,clone根本就不可靠,那clone方法在什么时候用呢???
      

  3.   

    java里直接用clone()方法只能实现浅度复制,这样虽然得到两个对象,但他们内部的东西是共享的;如果想实现深度复制只能把对象系列化,再读取对象,这样就实现了深度复制,两个对象内部的东西就不是共享的了
      

  4.   

    要实现深度复制,那就不用 clone方法了,创建一个相同的对象,把这个arrayList或HashMap的值导入到那个创建的对象中,不就可以了
      

  5.   

    LinkedList list = new LinkedList();
    HashMap map = new HashMap();
    map.put("a","1");
    list.add(map);LindedList cloneList = new LinkedList();
    HashMap map1=new HashMap();
    map1=(HashMap)map.clone();
    cloneList.add(map1);