網路通訊中以位元組傳輸
資料的儲存
實現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 序列化...