java中的Serializable接口的作用

原帖地址:http://www.ideagrace.com/html/doc/2006/06/30/00893.html

Object serialization的定義:
Object serialization 允許你將實現了Serializable接口的對象轉換爲字節序列,這些字節序列可以被完全存儲以備以後重新生成原來的對象。 

serialization不但可以在本機做,而且可以經由網絡操作(RMI)。這個好處是很大的----因爲它自動屏蔽了操作系統的差異,字節順序(用Unix下的c開發過網絡編程的人應該知道這個概念)等。比如,在Window平臺生成一個對象並序列化之,然後通過網絡傳到一臺Unix機器上,然後可以在這臺Unix機器上正確地重構這個對象。


Object serialization主要用來支持2種主要的特性:
1。Java的RMI(remote method invocation).RMI允許象在本機上一樣操作遠程機器上的對象。當發送消息給遠程對象時,就需要用到serializaiton機制來發送參數和接收返回直。

2。Java的JavaBeans. Bean的狀態信息通常是在設計時配置的。Bean的狀態信息必須被存起來,以便當程序運行時能恢復這些狀態信息。這也需要serializaiton機制。



二。sakulagi和rollingpig說的持久化我也說一下。
我覺得你們說的應該是英文裏的persistence.但是Java語言裏現在只支持lightweight persistence,就是輕量級持久化,這是通過serialization機制來實現的。

persistence是指一個對象的生命週期不由程序是否執行來決定,即使是在程序終止時這個對象也存在。它把一個serializable的對象寫到磁盤(本機或其他機器上的非RAM存儲器),並在程序重新調用時再讀取對象到通常的RAM存儲器。

爲什麼說Java的serialization機制實現的是lightweight persistence?因爲你必須顯式的序列化和反序列化程序裏的對象;而不是直接由一個關鍵詞來定義一個對象是序列化的然後由系統做相應的處理。 


下面是關於序列化的一個實例:

程序名稱:SerializationDemo.java
程序主題:實現對象的序列化和反序列化
程序說明:該程序由實例化一個MyClass類的對象開始,該對象有三個實例變量,類型分別爲String、int、double,是希望存儲和恢復的信息。

代碼內容

 

程序運行結果:object1和object2的實例變量是一樣的,輸出如下:[code:1:a55efb5f91]object1:s=Hello;i=-7;d=2.7E10
object2:s=Hello;i=-7;d=2.7E1
0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章