當大型專案開發時,有時候需要記錄 class 產生出來的物件,該物件為大型的資料結構,但是用找不到現有的檔案格式紀錄時,就可以考慮使用序列化方式 (Serialization) 記錄,但是該 class 必須實作序列化(implements serializable),如果沒有的話就會出現下列的錯誤:

Exception in thread "main" java.io.NotSerializableException: Test.person
    at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    at java.io.ObjectOutputStream.writeObject(Unknown Source)
    at Test.SerializationSample.main(SerializationSample.java:19)

 

舉例來說,下列物件為記錄個人身高與體重,為了記錄此資料結構,就實作了java序列化:

 

輸出結果

Height: 176.0 Weight: 60.0
Height: 176.0 Weight: 60.0
Read Ser: Height: 176.0 Weight: 60.0

 

上述程式碼中,顯示出,序列化需要使用 OutputStream 來記錄,並且副檔名可以不必要,或者隨意打,但是習慣上都會把副檔名改成 .ser。

讀檔也是用 InputStream,而習慣上一行就是一個 object。

 

 

arrow
arrow
    文章標籤
    Java序列化 Java反序列化
    全站熱搜

    葛瑞斯肯 發表在 痞客邦 留言(0) 人氣()