一直不是很懂很多写实体类实现序列化 是干嘛 有什么好处?
业精于勤,荒于嬉;行成于思,毁于随。
一個類別寫出來的時候,它只是躺在一個以.java為後綴的文字檔裡,簡單地說,就是在硬碟裡。 寫好的Java檔案經過編譯變成.class檔案後,由Java虛擬機器裝載運作。 而運作的時候,類別是在記憶體中表示的。透過new關鍵字產生的實例,也是在記憶體中存在的。 類別的實例在記憶體中有一定的儲存格式(可以參考Java虛擬機規範,物件的儲存格式),這跟它還沒有被執行時間躺在硬碟時的儲存格式是不一樣的。
new
序列化,就是將記憶體中的一個實例,以另外一種儲存方式(參考《Core Java》)儲存在硬碟中,換個說法就叫持久化。
這樣,只要別人拿到這個序列化後的實例的數據,就能透過反序列化把這個物件當時的狀態還原出來。
序列化應用的場景有很多,rmi,rpc。可以參考相關資料。
1.rmi(遠端方法呼叫)。當向遠端物件傳遞訊息時,需要物件序列化來傳送參數和傳回值。 2.實現輕量級的persistence,透過將序列化過物件寫入磁碟,等程式再次運行的時候再把它讀出來。
一個類別寫出來的時候,它只是躺在一個以.java為後綴的文字檔裡,簡單地說,就是在硬碟裡。
寫好的Java檔案經過編譯變成.class檔案後,由Java虛擬機器裝載運作。
而運作的時候,類別是在記憶體中表示的。透過
new
關鍵字產生的實例,也是在記憶體中存在的。類別的實例在記憶體中有一定的儲存格式(可以參考Java虛擬機規範,物件的儲存格式),這跟它還沒有被執行時間躺在硬碟時的儲存格式是不一樣的。
序列化,就是將記憶體中的一個實例,以另外一種儲存方式(參考《Core Java》)儲存在硬碟中,換個說法就叫持久化。
這樣,只要別人拿到這個序列化後的實例的數據,就能透過反序列化把這個物件當時的狀態還原出來。
序列化應用的場景有很多,rmi,rpc。可以參考相關資料。
1.rmi(遠端方法呼叫)。當向遠端物件傳遞訊息時,需要物件序列化來傳送參數和傳回值。
2.實現輕量級的persistence,透過將序列化過物件寫入磁碟,等程式再次運行的時候再把它讀出來。