iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0
Software Development

Java基礎筆記系列 第 29

Java的物件序列化Serializable

  • 分享至 

  • xImage
  •  

Java的序列化是指,將物件的狀態訊息轉換為可以存儲或傳輸的格式;當物件被序列化後,就可以被存放在檔案中,或者透過網路傳輸到另一個系統,而反序列化則是這些過程的逆操作,可以從序列化格式中,恢復到物件的狀態。

標記類別為可序列化

要讓Java類別的物件被序列化,此類別必須實現Serializable介面。
Serializable介面是一個標記介面,不包含任何方法。

public class ExampleClass implements Serializable {
    // class details...
}

執行序列化

Java提供ObjectOutputStream類別,可將物件序列化為位元組流,這些位元組流可以存儲在檔案中或透過網路進行傳輸。

ExampleClass object = new ExampleClass();
try (FileOutputStream fos = new FileOutputStream("serializedObject.ser");
     ObjectOutputStream oos = new ObjectOutputStream(fos)) {
    oos.writeObject(object);
}

執行反序列化

使用ObjectInputStream,可以從先前序列化的位元組流中恢復物件的狀態。

try (FileInputStream fis = new FileInputStream("serializedObject.ser");
     ObjectInputStream ois = new ObjectInputStream(fis)) {
    ExampleClass recoveredObject = (ExampleClass) ois.readObject();
}

要留意的是,並不是所有的物件都可以被序列化,只有實現Serializable介面的類別物件才可以進行序列化。
若某些數據不想被序列化,則可以使用transient關鍵字標記。


上一篇
Java的低階高階I/O
下一篇
我的首次第30篇
系列文
Java基礎筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言