序列化就是一種用來處理物件流的機制,所謂物件流也就是將物件的內容進行流化。
可以對流化後的物件進行讀寫操作,也可將流化後的物件傳送於網路之間。序列化是為了解決物件流讀寫操作時可能引發的問題(如果不進行序列化可能會存在資料亂序的問題)。 (推薦學習:java課程)
要實現序列化,需要讓一個類別實作Serializable接口,該接口是一個標識性接口,標註該類別物件是可被序列化的,然後使用一個輸出流來建構一個物件輸出流並透過writeObject(Object obj)方法就可以將實現物件寫出(即保存其狀態);
如果需要反序列化則可以用一個輸入流建立物件輸入流,然後透過readObject方法從流中讀取物件。序列化除了能夠實現物件的持久化之外,還能夠用於物件的深度克隆。
為了示範序列化在Java中是怎樣運作的,我將使用先前教學中提到的Employee類,假設我們定義瞭如下的Employee類,該類別實作了Serializable 介面。
public class Employee implements java.io.Serializable { public String name; public String address; public transient int SSN; public int number; public void mailCheck() { System.out.println("Mailing a check to " + name + " " + address); } }
請注意,一個類別的物件要序列化成功,必須滿足兩個條件:
該類別必須實作 java.io.Serializable 介面。
該類別的所有屬性必須是可序列化的。如果有一個屬性不是可序列化的,則該屬性必須註明是短暫的。
如果你想知道一個 Java 標準類別是否是可序列化的,請查看該類別的文件。檢驗一個類別的實例是否能序列化十分簡單, 只需要查看該類別有沒有實作 java.io.Serializable介面。
以上是java如何實現序列化的詳細內容。更多資訊請關注PHP中文網其他相關文章!