华南俳烁实业有限公司

考試首頁(yè) | 考試用書 | 培訓(xùn)課程 | 模擬考場(chǎng) | 考試論壇  
全國(guó)  |             |          |          |          |          |         
  當(dāng)前位置:計(jì)算機(jī)等級(jí) > 二級(jí)考試 > Java語(yǔ)言程序設(shè)計(jì) > 考試輔導(dǎo) > 文章內(nèi)容
  

全國(guó)計(jì)算機(jī)等級(jí)考試Java語(yǔ)言程序設(shè)計(jì)輔導(dǎo)(84)

中華IT學(xué)院   【 】  [ 2016年3月10日 ]

Java 提供了一種對(duì)象序列化的機(jī)制,該機(jī)制中,一個(gè)對(duì)象可以被表示為一個(gè)字節(jié)序列,該字節(jié)序列包括該對(duì)象的數(shù)據(jù)、有關(guān)對(duì)象的類型的信息和存儲(chǔ)在對(duì)象中數(shù)據(jù)的類型。

將序列化對(duì)象寫入文件之后,可以從文件中讀取出來,并且對(duì)它進(jìn)行反序列化,也就是說,對(duì)象的類型信息、對(duì)象的數(shù)據(jù),還有對(duì)象中的數(shù)據(jù)類型可以用來在內(nèi)存中新建對(duì)象。

整個(gè)過程都是Java虛擬機(jī)(JVM)獨(dú)立的,也就是說,在一個(gè)平臺(tái)上序列化的對(duì)象可以在另一個(gè)完全不同的平臺(tái)上反序列化該對(duì)象。

類ObjectInputStream 和ObjectOutputStream是高層次的數(shù)據(jù)流,它們包含序列化和反序列化對(duì)象的方法。

ObjectOutputStream 類包含很多寫方法來寫各種數(shù)據(jù)類型,但是一個(gè)特別的方法例外:

public final void writeObject(Object x) throws IOException

上面的方法序列化一個(gè)對(duì)象,并將它發(fā)送到輸出流。相似的ObjectInputStream 類包含如下反序列化一個(gè)對(duì)象的方法:

public final Object readObject() throws IOException, 
                                 ClassNotFoundException

該方法從流中取出下一個(gè)對(duì)象,并將對(duì)象反序列化。它的返回值為Object,因此,你需要將它轉(zhuǎn)換成合適的數(shù)據(jù)類型。

為了演示序列化在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);
   }
}

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

該類必須實(shí)現(xiàn) java.io.Serializable 對(duì)象。

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

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

分享到:
本文糾錯(cuò)】【告訴好友】【打印此文】【返回頂部
將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動(dòng)訪問考試網(wǎng) | 復(fù)制本頁(yè)地址,傳給QQ/MSN上的好友 | 申請(qǐng)鏈接 | 意見留言 TOP
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導(dǎo)航  考試論壇
Copyright © 2007-2013 中華考試網(wǎng)(Examw.com) All Rights Reserved
刚察县| 呼和浩特市| 秦皇岛市| 广饶县| 大城县| 长沙市| 水富县| 陇南市| 明光市| 舒城县| 宣城市| 侯马市| 舟曲县| 隆回县| 文成县| 锦屏县| 萨嘎县| 密山市| 松溪县| 天祝| 舞钢市| 吴旗县| 休宁县| 许昌市| 龙胜| 漾濞| 阳原县| 米泉市| 康乐县| 康定县| 浦北县| 金塔县| 越西县| 柘荣县| 龙南县| 通化市| 隆尧县| 永定县| 贡嘎县| 磴口县| 遵义市|