如果一个类中包含了多个对象,嵌套多个类,有没有方法可以只克隆主类而使其包含的所有对象也被克隆。
或者有没有其他方法可以使这个类在被多个用户调用时保证它的安全(对象空间),但不用同步方法。看清问题,不要废话。不需要网上那些关于克隆的废话。

解决方案 »

  1.   

    自己写个 clone方法呗,你想怎么办就怎么办
      

  2.   

    自己重写clone方法,要实现coloneable接口
      

  3.   

    关于克隆关于同步
    用java.util.concurrent.lock,可以自己精确控制哪个属性该锁,不过要注意出现死锁情况,这个是因为控制不当导致
      

  4.   

    如果要让内部属性的类也被clone那么还要使内部属性的类也实现clone.java中的这个玩意感觉和c++中的浅copy和深copy貌似有点像。。
      

  5.   

    重写clone方法
    对其进行压缩在解压就可以了                ByteArrayOutputStream bo = new ByteArrayOutputStream();
    ObjectOutputStream oo = new ObjectOutputStream(bo);
    oo.writeObject(this);
    ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray());
    ObjectInputStream oi = new ObjectInputStream(bi);
    return(oi.readObject());
      

  6.   

    >重写clone方法
    >对其进行压缩在解压就可以了
    >Java code
    >                ByteArrayOutputStream bo = new ByteArrayOutputStream();
    >        ObjectOutputStream oo = new ObjectOutputStream(bo);
    >        oo.writeObject(this);
    >        ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray());
    >        ObjectInputStream oi = new ObjectInputStream(bi);
    >        return(oi.readObject());
    to yuyeyi
      能不能说明以下原理,为什么进行Stream 的转化后,主类中嵌套的所有对象都重新分配了地址了?
      

  7.   

    这就是进行深度复制,oo.writeObject()会将对象以及它依赖或关联的对象全部复制保存起来,只有这样oo.readObject()后才能使用,如果只是浅复制(如clone()),则不会复制关联的对象