序列化一些要點筆記

2021-10-06 20:32:59 字數 2259 閱讀 6762

1. 乙個類可序列化的前提:實現serializable介面

2. 乙個屬性不想序列化的方式:增加transient關鍵字

3. serialversionuid 是表示乙個類的序列化標識,和乙個類的類名以及包路徑一起組成類在序列化時的唯一標識。

4. 當兩個jvm中存在serialversionuid+類名+包路徑一致的類時,這兩個jvm可以通過序列化達到此類資料共享的目的。

5. 當設定serialversionuid為1l時,指代忽略serialversionuid 的校驗。

6. static屬性儲存在方法區,不參與序列化過程(只有堆記憶體才會序列化,因此獲取值都是直接從方法區獲取)。

7. static如果在宣告期間對值進行了初始化,則會參與序列化。

8. static和transient同時修飾,transient會被忽略。

9. final 屬性直接通過值參與序列化過程,加transient不會生效。

10. 序列化時,如果對乙個物件多次序列化,只有第一次儲存物件狀態,之後都會儲存該物件的引用。

11. 序列化時,如果父類沒有實現序列化介面,則父類狀態不會序列化。

12. 反序列化時,並不呼叫建構函式。

13. 反序列化時,如果父類沒有實現序列化介面,則會呼叫父類的無參建構函式生成乙個父類物件。

14. 可以定製序列化規則,有三種方案,如下:

1. 自定義writeobject,readobject方法(ps:方法的訪問許可權必須為private

)2. 實現externalizable的writeexternal,readexternal方法(ps:必須實現externalizable才行)

3. 自定義writereplace,readresolve方法

三種方案的優先順序:

1. 序列化: writereplace > writeexternal > writeobject

2. 反序列化:readresolve > readexternal > readobject

@slf4j

@data

public

class

test

implements

serializable

, externalizable ';}

public

static

void

main

(string[

] args)

throws interruptedexception "

, test)

; test test1;

try(fileoutputstream fos =

newfileoutputstream

("e:");

objectoutputstream oos =

newobjectoutputstream

(fos)

; fileinputstream fis =

newfileinputstream

("e:");

objectinputstream ois =

newobjectinputstream

(fis))"

, test1);}

catch

(exception e)

}private

void

writeobject

(objectoutputstream out)

throws ioexception

private

void

readobject

(objectinputstream in)

throws ioexception, classnotfoundexception

@override

public

void

writeexternal

(objectoutput out)

throws ioexception

@override

public

void

readexternal

(objectinput in)

throws ioexception, classnotfoundexception

public object writereplace()

public object readresolve()

}

Unity序列化一些內容

序列化又稱序列化,是.net執行時環境用來支援使用者定義型別的流化的機制。其目的是以某種儲存形式使自定義物件持久化,或者將這種物件從乙個地方傳輸到另乙個地方。簡單來說就是將物件儲存到檔案中。如unity的場景檔案和預製體預設就是以二進位制的檔案儲存在工程目錄下。在unity中,在檢視面板中可以看到的...

序列化和反序列化的一些注意事項

序列化就是將物件儲存到磁碟中 反序列化就是將物件讀取出來 注意事項 1.想要讓乙個物件能夠進行序列化,需要將這個物件所屬的類實現乙個標記介面 serializable 2.如果序列化後,這個類進行了修改,反序列時會報錯 會丟擲 invalidclas ception異常 可以在這個類中加privat...

Serializable 序列化筆記

網路通訊中以位元組傳輸 資料的儲存 實現serializable 介面 實現externalizable 介面,其中externalizable 介面繼承了serializable 介面 1 user 類實現serializable 介面,新增生成serialversionuid public cl...