更新時間:2022-07-28 11:36:09 來源:動力節(jié)點 瀏覽1680次
Java實體類序列化是什么?下面就由動力節(jié)點小編來為大家進行介紹。
序列化就是把對象改成二進制的過程。是可以存儲或者傳輸?shù)倪^程。
我們創(chuàng)建出來的這些對象都存在于JVM堆內存中,只有JVM處于運行狀態(tài)的時候,這些對象才可能存在。一旦JVM停止,這些對象也就隨之消失;但是在真實的應用場景中,我們需要將這些對象持久化下來,并且在需要的時候將對象重新讀取出來,Java的序列化可以幫助我們實現(xiàn)該功能。
可以保存在磁盤上或者網絡發(fā)送。
一般實現(xiàn)java.io.Serializeble可以實例化。
也可以實現(xiàn)java.io.Externalizable來進行實例化。
ObjectInputStream和ObjectOutPutStream進行存儲和讀取對象。
變量聲明成靜態(tài)變量 static
變量聲明成瞬態(tài)變量 transient
如果沒有設置這個值,你在序列化一個對象之后,改動了該類的字段或者方法名之類的,那如果你再反序列化想取出之前的那個對象時就可能會拋出異常,因為你改動了類中間的信息,serialVersionUID是根據(jù)類名、接口名、成員方法及屬性等來生成一個64位的哈希字段,當修改后的類去反序列化的時候發(fā)現(xiàn)該類的serialVersionUID值和之前保存在問價中的serialVersionUID值不一致,所以就會拋出異常。而顯示的設置serialVersionUID值就可以保證版本的兼容性,如果你在類中寫上了這個值,就算類變動了,它反序列化的時候也能和文件中的原值匹配上。而新增的值則會設置成null,刪除的值則不會顯示。

就如左邊的客戶端訪問右邊數(shù)據(jù)庫,一般情況下都是在同一個windows下,如果將服務器部署到linux上,這就設計到不同的主機。
客戶端可以調用服務器,所以會傳遞參數(shù),假如你傳遞的是字符串,那么雙方都是可以識別的,假設你傳遞的是一個Java對象,那么服務器就不識別不了這個Java對象,本質上Java對象是class字節(jié)碼,服務器并不一定能識別字節(jié)碼文件,那么我們把Java對象轉化成公共的格式叫做序列化,將公共的格式轉化為對象叫做反序列化。而保存到系統(tǒng)文件或者數(shù)據(jù)庫中只是一種表示形式。
以上就是關于“Java實體類序列化的介紹”,大家如果想了解更多相關知識,不妨來關注一下動力節(jié)點的Java在線學習,里面的課程內容從入門到精通,細致全面,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。