天天看點

【譯】Java中的對象序列化前言什麼是對象序列化為什麼需要序列化Java序列化例子

好久沒翻譯simple java了,睡前來一篇。

譯文連結:

<a href="http://www.programcreek.com/2014/01/java-serialization/" target="_blank">http://www.programcreek.com/2014/01/java-serialization/</a>

在Java中,對象序列化指的是将對象用位元組序列的形式表示,這些位元組序列包含了對象的資料和資訊,一個序列化後的對象可以被寫到資料庫或檔案中,并且支援從資料庫或檔案中反序列化,進而在記憶體中重建對象;

序列化經常被用于對象的網絡傳輸或本地存儲。網絡基礎設施和硬碟隻能識别位和位元組資訊,而不能識别Java對象。通過序列化能将Java對象轉成位元組形式,進而在網絡上傳輸或存儲在硬碟。

那麼為什麼我們需要存儲或傳輸對象呢?根據我的程式設計經驗,有如下原因需要将對象序列化(以下原因,我表示沒使用過。。。):

一個對象的建立依賴很多上下文環境,一旦被建立,它的方法和屬性會被很多其它元件所使用;

一個包含了很多屬性的對象建立後,我們并不清楚如何使用這些屬性,是以将它們存儲到資料庫用于後續的資料分析;

順便也說下,根據我(真正的我)的程式設計經驗,序列化使用情況如下:

網絡上的對象傳輸

使用一些緩存架構的時候,比如ehcache,将對象緩存到硬碟的時候,需要序列化,還有hibernate也會用到;

RMI(遠端方法調用)

以下代碼展示了如何讓一個類可序列化,對象的序列化以及反序列化;

對象:

【譯】Java中的對象序列化前言什麼是對象序列化為什麼需要序列化Java序列化例子
【譯】Java中的對象序列化前言什麼是對象序列化為什麼需要序列化Java序列化例子

main方法

【譯】Java中的對象序列化前言什麼是對象序列化為什麼需要序列化Java序列化例子
【譯】Java中的對象序列化前言什麼是對象序列化為什麼需要序列化Java序列化例子

結果列印:

Serialized dog is saved in ./dog.ser

Deserialized Dog ...

Name: bulldog

Color: white

Weight: 0

I have a white bulldog.

本文轉自風一樣的碼農部落格園部落格,原文連結:http://www.cnblogs.com/chenpi/p/5582492.html,如需轉載請自行聯系原作者