首頁  >  文章  >  Java  >  java序列化反序列化的過程是什麼?

java序列化反序列化的過程是什麼?

王林
王林原創
2024-04-15 18:06:011140瀏覽

Java 序列化和反序列化涉及以下步驟:將實作了 Serializable 介面的類別寫入流中(序列化)。將物件從流中讀取(反序列化)。

java序列化反序列化的過程是什麼?

Java 序列化與反序列化的過程

#序列化

  1. 編寫一個實現了Serializable 介面的類別。
  2. 建立一個 ObjectOutputStream 對象,並將其與一個檔案或位元組流關聯。
  3. 使用 ObjectOutputStream.writeObject() 方法將物件寫入流中。

範例程式碼:

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class Employee implements Serializable {
    private String name;
    private int age;

    // 省略getter和setter方法

    public static void main(String[] args) {
        Employee employee = new Employee("John", 30);
        
        try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("employee.txt"))) {
            out.writeObject(employee);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

反序列化

  1. 建立一個ObjectInputStream 對象,並將其與一個檔案或位元組流關聯。
  2. 使用 ObjectInputStream.readObject() 方法讀取物件。

範例程式碼:

import java.io.FileInputStream;
import java.io.ObjectInputStream;

public class DeserializeEmployee {
    public static void main(String[] args) {
        try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("employee.txt"))) {
            Employee employee = (Employee) in.readObject();
            System.out.println(employee.getName() + ", " + employee.getAge());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

注意事項:

  • 只有實作了Serializable 介面的類別才能進行序列化。
  • 序列化和反序列化的順序必須一致。
  • 類別的結構在序列化和反序列化之間不能改變。
  • 序列化物件可能會很慢,尤其是對於大型物件。

以上是java序列化反序列化的過程是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn