17
2012
10

用对象序列化进行深拷贝

对仅仅封装了基本数据类型的对象进行拷贝,只要实现cloneable接口,覆盖clone方法,用Object的clone方法即可(这个方法是JNI实现,速度远远快过新建对象再赋值)。

但是对于复合对象,进行深度拷贝就需要所有对象都实现cloneable接口,覆盖clone方法,显然非常繁杂。

其实可以利用JAVA的对象序列化进行复制对象,如:

    private Object cloneObject(Object obj) throws Exception{
        ByteArrayOutputStream  byteOut = new ByteArrayOutputStream(); 
        ObjectOutputStream out = new ObjectOutputStream(byteOut); 
        out.writeObject(obj);
       
        ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); 
        ObjectInputStream in =new ObjectInputStream(byteIn);
       
        return in.readObject();
    }

是不是很诡异,hia hia hia!

« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。