搜尋此網誌

2012年3月4日 星期日

Java Serialization (Java 序列化)

一般來說物件實體只能存活在JVM中如果想要把物件的實體狀態給保留下來的話,可以使用序列化這個技術,以下是把物件實體寫入檔案的例子.





而SerializationReadSample.java則是把剛剛序列化後的物件,讀回來的程式碼:


只要欲保存的類別有implement Serializable這個界面, 就可以拿來作序列化的動作.

當類別中有不想被序列化的field, 例如,socket, or thread等等的動態內容,

則可以在宣告變數的時候加上transient 這個關鍵字.


千萬不可序列化內部類別(inner class) , 無論是local或是匿名內部類別. 因為這麼做的話 ,

compiler會為內部類別產生合成的建構子.  因為合成的建構子 , 在source code找不到實作的細節

會隨著java compiler版本的不同, 而產生不同的建構子, 也就是說你在A版本編譯出來的code,

很可能在B版本跑不起來 , 造成相容性的問題 .