楼主参考一下,1、在class sourceA中加入这个方法       public Object clone(){
                try{
                        return super.clone();
                }catch(CloneNotSupportedException e){
                        throw new InternalError();
                }
        }2、在用的时候:
classA a = (classA)b.clone();//b是一个之前定义好的classA的对象good luck

解决方案 »

  1.   

    clone本来就是生成另外一个不同空间的
      

  2.   

    To villagehead:你的方法是浅克隆,但现在是需要到深克隆的.
      

  3.   

    深克隆:你把所有用到的对象的clone方法都复写成支持深克隆就行。
      

  4.   

    拥有100多个属性的类是一个很糟糕的类,这会使得生成的对象占用大量资源,事实上这样的类是完全可以拆分成多个类的。诸如String,List,Map之类的类都是自身实现了clone()方法的,你可以直接使用,很轻松就能实现深度克隆
      

  5.   

    把所有用到的对象的clone方法都复写成支持深克隆的,直到遇到属性是String,List,Map之类的类(自身实现了clone()方法)不就可以了
    拥有100多个属性的类是一个很糟糕的类----同意!!!
      

  6.   

    把你要克隆的类的CLONE()方法,重新写一下,把类中的其他类的CLONE也调用一下就可以了
      

  7.   

    如果有List,Map等东西可能需要递归进去,一层层Clone,否则还是浅层Clone
      

  8.   

    是啊,忘了他们也是浅Clone了^_^
      

  9.   

    deepClone.将里面的每一个成员都CLONE一份,这样就可以保证克隆了。我在practice java 里面看的。
      

  10.   

    jiangnanyuzi(江南愚子) 的观点是非常正确的,另外对于深度克隆的具体方法,你可以看《Thinking in java 3rd》也就是第三版后面的附录里面有讲解的。
      

  11.   

    Class A implements Cloneable{
    HashMap hmX = new HashMap();
    HashMap hmY = new HashMap();public Object clone(){
        A o = null;
                    try{
                            o = (A)super.clone();
                    }catch(CloneNotSupportedException e){
                            throw new InternalError();
                    }
        o.hmX = (HashMap)o.hmX.clone();
        o.hmY = (HashMap)o.hmY.clone();    
         return o;
            }
    }这个例子是thinking in java里的一个(稍做了变化)
    因为HashMap支持clone方法,所以直接克隆就可以了。如果是自己写的对象,就要让那个对象也要支持克隆了。good luck