溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java實(shí)現(xiàn)序列化的方法有哪些

發(fā)布時(shí)間:2020-05-19 14:51:31 來源:億速云 閱讀:487 作者:栢白 欄目:編程語言

序列化就是一種用來處理對象流的機(jī)制,所謂對象流也就是將對象的內(nèi)容進(jìn)行流化。

可以對流化后的對象進(jìn)行讀寫操作,也可將流化后的對象傳輸于網(wǎng)絡(luò)之間。序列化是為了解決對象流讀寫操作時(shí)可能引發(fā)的問題(如果不進(jìn)行序列化可能會存在數(shù)據(jù)亂序的問題)。    

要實(shí)現(xiàn)序列化,需要讓一個(gè)類實(shí)現(xiàn)Serializable接口,該接口是一個(gè)標(biāo)識性接口,標(biāo)注該類對象是可被序列化的,然后使用一個(gè)輸出流來構(gòu)造一個(gè)對象輸出流并通過writeObject(Object obj)方法就可以將實(shí)現(xiàn)對象寫出(即保存其狀態(tài));

java實(shí)現(xiàn)序列化的方法有哪些

如果需要反序列化則可以用一個(gè)輸入流建立對象輸入流,然后通過readObject方法從流中讀取對象。序列化除了能夠?qū)崿F(xiàn)對象的持久化之外,還能夠用于對象的深度克隆。

為了演示序列化在Java中是怎樣工作的,我將使用之前教程中提到的Employee類,假設(shè)我們定義了如下的Employee類,該類實(shí)現(xiàn)了Serializable 接口。

public class Employee implements java.io.Serializable
{
   public String name;
   public String address;
   public transient int SSN;
   public int number;
   public void mailCheck()
   {
      System.out.println("Mailing a check to " + name
                           + " " + address);
   }
}

請注意,一個(gè)類的對象要想序列化成功,必須滿足兩個(gè)條件:

該類必須實(shí)現(xiàn) java.io.Serializable 接口。

該類的所有屬性必須是可序列化的。如果有一個(gè)屬性不是可序列化的,則該屬性必須注明是短暫的。

如果你想知道一個(gè) Java 標(biāo)準(zhǔn)類是否是可序列化的,請查看該類的文檔。檢驗(yàn)一個(gè)類的實(shí)例是否能序列化十分簡單, 只需要查看該類有沒有實(shí)現(xiàn) java.io.Serializable接口。

以上就是java實(shí)現(xiàn)序列化的方法有哪些的詳細(xì)內(nèi)容,更多請關(guān)注億速云其它相關(guān)文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI