ArrayList   list2   =   new   ArrayList(Arrays.asList(new   Object[list1.size()]));
ArrayList list3 = new ArrayList(list1);

解决方案 »

  1.   

    深拷贝与浅拷贝
    浅拷贝:只复制一个对象,对象内部存在的指向其他对象数组或者引用则不复制。
    深拷贝:对象,对象内部的引用均复制。
    注:克隆属于浅拷贝
    理解:一个学生对象(s1)拥有一个教授对象,和自己的名字,对这个学生对象进行克隆后,产生一个新的学生对象(s2)。改变s2的名字,不会影响到s1的名字。但是如果改变s2的教授的属性,则影响到s1的教授属性,因为教授对象是引用类型,没有被拷贝。那么怎么做到克隆学生对象的时候连教授对象也克隆呢(也就是深拷贝)?如下
    教授类也实现Cloneable接口,在克隆学生的方法中如下
    public Object clone(){        
            Student o=null;        
            try{            
                    o=(Student)super.clone();        
            }        
            catch(CloneNotSupportedException e)        {            
                    System.out.println(e.toString());        
            }        
            o.p=(Professor)p.clone(); //重点就在这里   
            return o;    
    }
      

  2.   

    这个是C++的名词,在Java里面基本是不适用的。深拷贝,浅拷贝是为了处理C++里面不同对象持有成员的所有权问题,而Java是gc的,同样场景下根本就不需要深拷贝了。
      

  3.   

    我晕,我发的帖就没人回答?也是深浅拷贝问题。
    http://topic.csdn.net/u/20110515/11/7ac3e561-6f46-478a-bdbb-1f1615582ac2.html
      

  4.   

    我之前总结的,lz可以看一下,关于Object.clone()的
    http://blog.csdn.net/chosen0ne/archive/2011/03/30/6290186.aspx
      

  5.   

    怎么不回答我发的例子,说说这两个赋值的区别,顺便捎带把深浅copy说说
      

  6.   

    对于引用类型的拷贝,例如Date,注意需要创建新的对象;对于基本类型,例如String,int,直接复制即可
      

  7.   

    本帖最后由 AWUSOFT 于 2011-05-17 23:05:28 编辑