Serializable 序列化筆記

2021-09-19 14:01:47 字數 2113 閱讀 6203

網路通訊中以位元組傳輸

資料的儲存

實現serializable 介面

實現externalizable 介面,其中externalizable 介面繼承了serializable 介面

(1)user 類實現serializable 介面,新增生成serialversionuid

public class user implements serializable 

public void setname(string name)

public integer getage()

public void setage(integer age)

@override

public string tostring()

}

(2)測試類

public class testserializable 

private static void serialize(serializable sobj) catch (exception e)

system.out.println("序列化成功"); }

private static object deserialize() catch (exception e)

return null;

}}

(3)結果

序列化成功

反序列化成功

user [name=testname, age=20]

是序列化和反序列化的標識,只有id 相同才能成功轉換。刪除serialversionuid 的情況種,當已經序列化在檔案之中,然後修改user 類,之後反序列化會報錯。

當user 類很多屬性時,只有乙個或幾個不需要序列化,在屬性前新增transient 關鍵字。

當user 類很多屬性時,只有乙個或幾個需要序列化時,實現externalizable 介面來對這個或這些屬性序列化。

問題:為什麼實現 externalizable 介面不用serialversionuid ?

externalizable的反序列化和serializable不一樣,它會在反序列化時呼叫物件的預設建構函式來建立這個物件,然後利用void readexternal(objectinput in)中的對相應的屬性的進行初始化。如果沒有該預設建構函式,會報錯。

public class user implements externalizable 

/**反序列化時自動呼叫*/

@override

public void readexternal(objectinput in) throws ioexception, classnotfoundexception

public string getname()

public void setname(string name)

public integer getage()

public void setage(integer age)

@override

public string tostring()

}

執行結果 

序列化成功

反序列化成功

user [name=testname, age=null]

public class user implements serializable 

//呼叫objectinputstream.readobject 的時候自動呼叫

private void readobject(objectinputstream ois) throws exception

public string getname()

public void setname(string name)

public integer getage()

public void setage(integer age)

@override

public string tostring()

}

序列化和反序列化Serializable 2

見 一 持久化的簡單介紹 持久化 意味著物件的 生存時間 並不取決於程式是否正在執行 它存在或 生存 於程式的每一次呼叫之間。通過序列化乙個物件,將其寫入磁碟,以後在程式再次呼叫時重新恢復那個物件,就能圓滿實現一種 持久 效果。二 語言裡增加了物件序列化的概念後,可提供對兩種主要特性的支援 三 se...

C 中Serializable序列化

序列化就是是將物件轉換為容易傳輸的格式的過程,一般情況下轉化打流檔案,放入記憶體或者io檔案 中。例如,可以序列化乙個物件,然後使用 http 通過 internet 在客戶端和伺服器之間傳輸該物件,或者和其它應用程式共享使用。反之,反序列化根據流重新構造物件。一 幾種序列化技術 1 二進位制序列化...

序列化 Serializable 的學習

1 什麼是序列化?net的執行時環境用來支援使用者定義型別的流化的機制。它是將物件例項的狀態儲存到儲存 的過程。在此過程中,先將物件的公共欄位和私有字段以及類的名稱 包括類所在的程式集 轉換為位元組流,然後再把位元組流寫入資料流。在隨後對物件進行反序列化時,將建立出與原物件完全相同的副本。2 序列化...