亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

Java集合如何實現深拷貝

小樊
115
2024-06-27 19:22:29
欄目: 編程語言

在Java中,實現深拷貝可以通過以下幾種方式:

  1. 使用序列化和反序列化:將對象序列化為字節流,然后再將字節流反序列化為新的對象,這樣就能實現深拷貝。示例代碼如下:
import java.io.*;

public class DeepCopyExample {

    public static void main(String[] args) throws Exception {
        // 創建原始對象
        Person person = new Person("Alice", 25);

        // 深拷貝
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(bos);
        oos.writeObject(person);
        oos.close();

        ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
        ObjectInputStream ois = new ObjectInputStream(bis);
        Person copiedPerson = (Person) ois.readObject();
        ois.close();

        // 輸出兩個對象的信息,驗證是否是深拷貝
        System.out.println("原始對象:" + person);
        System.out.println("拷貝對象:" + copiedPerson);
    }

    static class Person implements Serializable {
        private String name;
        private int age;

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

        @Override
        public String toString() {
            return "Person{name='" + name + "', age=" + age + '}';
        }
    }
}
  1. 使用Cloneable接口和重寫clone()方法:實現Cloneable接口,并重寫clone()方法,在clone()方法中調用super.clone()獲取對象的淺拷貝,然后再對引用類型的屬性進行深拷貝。示例代碼如下:
public class DeepCopyExample {

    public static void main(String[] args) throws CloneNotSupportedException {
        // 創建原始對象
        Person person = new Person("Alice", 25);

        // 深拷貝
        Person copiedPerson = (Person) person.clone();

        // 輸出兩個對象的信息,驗證是否是深拷貝
        System.out.println("原始對象:" + person);
        System.out.println("拷貝對象:" + copiedPerson);
    }

    static class Person implements Cloneable {
        private String name;
        private int age;

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

        @Override
        protected Object clone() throws CloneNotSupportedException {
            Person clonedPerson = (Person) super.clone();
            return clonedPerson;
        }

        @Override
        public String toString() {
            return "Person{name='" + name + "', age=" + age + '}';
        }
    }
}

以上是兩種常見的實現深拷貝的方式,開發者可以根據實際情況選擇合適的方式來實現深拷貝。

0
竹北市| 临湘市| 淳安县| 永新县| 合江县| 老河口市| 高安市| 扶余县| 英德市| 和顺县| 弥渡县| 抚州市| 双柏县| 洮南市| 宁化县| 西丰县| 茌平县| 长治县| 永靖县| 齐河县| 遵义县| 会东县| 正宁县| 东至县| 永康市| 南安市| 焉耆| 锦州市| 长兴县| 衢州市| 乡宁县| 肃宁县| 庄浪县| 十堰市| 高平市| 甘肃省| 绿春县| 无锡市| 前郭尔| 靖安县| 石渠县|