为了实现深度克隆,一个最简单的办法就是让需要克隆的类全部实现Serializable,然后:
            ByteArrayOutputStream byteArrOs = new ByteArrayOutputStream();
            ObjectOutputStream objOs = new ObjectOutputStream(byteArrOs);
            objOs.writeObject(this);

            ByteArrayInputStream byteArrIs = new ByteArrayInputStream(byteArrOs.toByteArray());
            ObjectInputStream objIs = new ObjectInputStream(byteArrIs);
            Object deepCopy = objIs.readObject();
在实现的时候遇到一个问题,就是我的this的类的父类忘记增加implements Serializable,导致克隆出来的对象丢失了父类中的信息,解决方法当然也很简单了,在父类加上implements Serializable就行了。
所以用这个方式的时候一定要小心,就是你需要深度克隆的对象相关的所有对象都要implements Serializable,否则那部分不会被克隆,而且没有任何异常。那些类的子类也需要加上。

(Visited 48 times, 1 visits today)