Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java copy对象

作者:尛丸子的天真▍我学不会゜   发布日期:2025-03-10   浏览:54

// 深拷贝示例代码:使用序列化实现深拷贝

import java.io.*;

class Person implements Serializable {
    private static final long serialVersionUID = 1L;
    public String name;
    public int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 使用序列化实现深拷贝
    public Person deepCopy() throws IOException, ClassNotFoundException {
        // 序列化对象到字节数组输出流
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ObjectOutputStream out = new ObjectOutputStream(bos);
        out.writeObject(this);

        // 反序列化对象从字节数组输入流
        ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
        ObjectInputStream in = new ObjectInputStream(bis);
        return (Person) in.readObject();
    }
}

public class DeepCopyExample {
    public static void main(String[] args) {
        try {
            Person original = new Person("John", 30);
            Person copied = original.deepCopy();

            // 修改原始对象的属性
            original.name = "Jane";

            System.out.println("Original: " + original.name + ", " + original.age);
            System.out.println("Copied: " + copied.name + ", " + copied.age);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

解释说明:

  1. 类定义Person 类实现了 Serializable 接口,这是为了支持对象的序列化和反序列化操作。serialVersionUID 是用于版本控制的唯一标识符。
  2. 构造函数Person 类有一个构造函数用于初始化对象的 nameage 属性。
  3. 深拷贝方法deepCopy() 方法通过将对象序列化为字节数组,然后再反序列化为新的对象,从而实现深拷贝。这样可以确保新对象与原对象完全独立。
  4. 测试代码:在 main 方法中,创建了一个 Person 对象并调用 deepCopy() 方法生成一个新的对象。然后修改了原始对象的 name 属性,以验证两个对象是独立的。

这种方法适用于需要深拷贝的对象,特别是当对象包含其他可变对象时。

上一篇:java判断字符串是否为纯数字

下一篇:java生成唯一id

大家都在看

java连接数据库的代码

ubuntu 卸载java

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java 时间加一天

java demo

java 截取

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站