读书人

Java的深拷贝的两种兑现

发布时间: 2012-12-27 10:17:09 作者: rapoo

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;   }  

读书人网 >编程

热点推荐