什么是 Java 深拷贝如何实现

发布时间:2025-01-23 23:46:39 作者:小樊
来源:亿速云 阅读:108

Java深拷贝是指创建一个新对象,并递归地拷贝原始对象的所有成员变量。这意味着所有基本类型和引用类型都被复制,新对象与原始对象在内存中完全独立。深拷贝可以通过实现Cloneable接口并重写clone()方法来实现,或者使用序列化/反序列化的方式来完成。

以下是使用Cloneable接口和重写clone()方法实现深拷贝的示例:

class MyClass implements Cloneable {
    private int[] data;

    public MyClass(int[] data) {
        this.data = data;
    }

    public int[] getData() {
        return data;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        MyClass cloned = (MyClass) super.clone();
        cloned.data = data.clone(); // 递归复制数组
        return cloned;
    }
}

使用序列化/反序列化实现深拷贝的示例:

import java.io.*;

class MyClass implements Serializable {
    private int[] data;

    public MyClass(int[] data) {
        this.data = data;
    }

    public int[] getData() {
        return data;
    }

    public static MyClass deepCopy(MyClass original) {
        MyClass copy = null;
        try {
            // 序列化原始对象
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(baos);
            oos.writeObject(original);

            // 反序列化为新对象
            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
            ObjectInputStream ois = new ObjectInputStream(bais);
            copy = (MyClass) ois.readObject();
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
        return copy;
    }
}

这两种方法都可以实现深拷贝,但序列化/反序列化的方式更加灵活,可以处理更复杂的对象结构。

推荐阅读:
  1. 什么是Python深浅拷贝
  2. java中的深复制是如何实现的

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Java Clone 与浅拷贝有什么区别

下一篇:如何处理 Clone 引发的异常

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》