如何在 Java 中序列化和反序列化一個物件?
序列化是一個將物件的狀態轉換為位元組流的過程,如果一個類的類或父類實現了 Serializable 或 Externalizable 介面,那麼這個物件就是可序列化的,反序列化是將序列化物件轉換回物件副本的過程。
在序列化期間,如果我們不想使用 transient 關鍵字在位元組流中寫入特定變數的狀態。
當 JVM 遇到 transient 關鍵字時,它會忽略變數的原始狀態並存儲該資料型別(即 int 為 0、byte 為 0、float 為 0.0 等等)的預設值。物件的序列化可以透過 FileOutputStream 和 ObjectOutputStream 類來完成。
示例
import java.io.*;
public class SerializationTest implements Serializable {
int a = 1, b = 2;
transient int c = 3;
public static void main(String[] args) throws Exception {
SerializationTest obj = new SerializationTest();
// serialization
FileOutputStream fos = new FileOutputStream("serialization.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(obj);
// de-serialization
FileInputStream fis = new FileInputStream("serialization.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
SerializationTest test = (SerializationTest)ois.readObject();
System.out.println("a = " + test.a);
System.out.println("b = " + test.b);
System.out.println("c = " + test.c);
}
}
輸出
a = 1 b = 2 c = 0
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP