Java实现对象深拷贝

在实际编程过程中,往往需要考虑深拷贝的问题,如果类成员变量中含有其他类成员,则所含类成员也需要实现Cloneable接口。考虑一种极端情况,如果类中所有变量均为其他类的实例,那逐个实现为其实现Cloneable接口并不现实。
本文采用Java IO技术实现对象的深拷贝。
Step1 所创建类必须实现图示接口

public class Individual implements Cloneable, Serializable

Step2 用IO流重写clone方法

@Override
    public Individual clone() {
        try {
            ByteArrayOutputStream bout = new ByteArrayOutputStream();
            ObjectOutputStream out = new ObjectOutputStream(bout);
            out.writeObject(this);
            ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
            ObjectInputStream in = new ObjectInputStream(bin);
            Individual clone = (Individual) in.readObject();
            return clone;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

其中,函数返回类型改为类名,访问权限改为public,可见重写的方法中不再包含任何类成员变量相关信息,此为真正实现了深拷贝。

你可能感兴趣的:(Java实现对象深拷贝)