1. 程式人生 > >java中POJO類為什麼要實現序列化

java中POJO類為什麼要實現序列化

序列化就是一種用來處理物件流的機制,所謂物件流也就是將物件的內容進行流化。可以對流化後的物件進行讀寫操作,也可將流化後的物件傳輸於網路之間。序列化是為了解決在對物件流進行讀寫操作時所引發的問題。序列化的實現:將需要被序列化的類實現Serializable介面,該介面沒有需要實現的方法,implements Serializable只是為了標註該物件是可被序列化的,然後使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(物件流)物件,接著,使用ObjectOutputStream物件的writeObject(Object obj)方法就可以將引數為obj的物件寫出(即儲存其狀態),要恢復的話則用輸入流。 

序列化:序列化是將物件轉換為容易傳輸的格式的過程。例如,可以序列化一個物件,然後使用 HTTP 通過 Internet 在客戶端和伺服器之間傳輸該物件。在另一端,反序列化將從該流重新構造物件。

物件永久化的一種機制

   確切的說應該是物件的序列化,一般程式在執行時,產生物件,這些物件隨著程式的停止執行而消失,但如果我們想把某些物件(因為是物件,所以有各自不同的特性)儲存下來,在程式終止執行後,這些物件仍然存在,可以在程式再次執行時讀取這些物件的值,或者在其他程式中利用這些儲存下來的物件。這種情況下就要用到物件的序列化。

   只有序列化的物件才可以儲存在儲存裝置上

。為了物件的序列化而需要繼承的介面也只是一個象徵性的介面而已,也就是說繼承這個介面說明這個物件可以被序列化了,沒有其他的目的。之所以需要物件序列化,是因為有時候物件需要在網路上傳輸,傳輸的時候需要這種序列化處理,從伺服器硬碟上把序列化的物件取出,然後通過網路傳到客戶端,再由客戶端把序列化的物件讀入記憶體,執行相應的處理。

   物件序列化是java的一個特徵,通過該特徵可以將物件寫作一組位元組碼,當在其他位置讀到這些位元組碼時,可以依此建立一個新的物件,而且新物件的狀態與原物件完全相同。為了實現物件序列化,要求必須能夠訪問類的私有變數,從而保證物件狀態能夠正確的得以儲存和恢復。相應的,物件序列化API能夠在物件重建時,將這些值還原給私有的資料成員。這是對java語言訪問許可權的挑戰。通常用在伺服器客戶端的物件交換上面,另外就是在本機的儲存。

   物件序列化的最主要的用處就是在傳遞,和儲存物件(object)的時候,保證物件的完整性和可傳遞性。譬如通過網路傳輸,或者把一個物件儲存成一個檔案的時候,要實現序列化介面