首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java的深拷贝的两种兑现

2012-12-27 
Java的深拷贝的两种实现1.java.lang.Object的clone()方法默认是返回一个前拷贝对象。如果要用clone()方法实

Java的深拷贝的两种实现
1.java.lang.Object的clone()方法默认是返回一个前拷贝对象。如果要用clone()方法实现一个深拷贝,必须对每个对象的clone()方法进行特别实现。当对象层次复杂的时候,这样做不但困难而且浪费时间和容易出现错误。

2.序列化:把要拷贝的对象输出成byte array,然后再利用ObjectInputStream转换出新的对象。

public static Object copy(Object oldObj) {       Object obj = null;       try {           // Write the object out to a byte array           ByteArrayOutputStream bos = new ByteArrayOutputStream();           ObjectOutputStream out = new ObjectOutputStream(bos);           out.writeObject(oldObj);           out.flush();           out.close();             // Retrieve an input stream from the byte array and read           // a copy of the object back in.           ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());            ObjectInputStream in = new ObjectInputStream(bis);           obj = in.readObject();       } catch (IOException e) {           e.printStackTrace();       } catch (ClassNotFoundException cnfe) {           cnfe.printStackTrace();       }       return obj;   }  

热点排行