久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

比較java.io.Externalizable和java.io.Serializable.doc

 碧海山城 2010-07-29

即使你沒有用過對象序列化(serialization),,你可能也知道它,。但你是否知道 Java 還支持另外一種形式的對象持久化,外部化(externalization),?
下面是序列化和外部化在代碼級的關(guān)聯(lián)方式:

public interface Serializable {}

public interface Externalizable extends Serializable {
 void readExternal(ObjectInput in);
 void writeExternal(ObjectOutput out);
}

序列化和外部化的主要區(qū)別

外部化和序列化是實現(xiàn)同一目標(biāo)的兩種不同方法,。下面讓我們分析一下序列化和外部化之間的主要區(qū)別。

通過Serializable接口對對象序列化的支持是內(nèi)建于核心 API 的,,但是java.io.Externalizable的所有實現(xiàn)者必須提供讀取和寫出的實現(xiàn),。Java 已經(jīng)具有了對序列化的內(nèi)建支持,也就是說只要制作自己的類java.io.Serializable,,Java 就會試圖存儲和重組你的對象,。如果使用外部化,你就可以選擇完全由自己完成讀取和寫出的工作,,Java 對外部化所提供的唯一支持是接口:

voidreadExternal(ObjectInput in)
void writeExternal(ObjectOutput out)

現(xiàn)在如何實現(xiàn)readExternal() writeExternal() 就完全看你自己了,。

序列化會自動存儲必要的信息,用以反序列化被存儲的實例,,而外部化則只保存被存儲的類的標(biāo)識,。當(dāng)你通過java.io.Serializable接口序列化一個對象時,有關(guān)類的信息,,比如它的屬性和這些屬性的類型,,都與實例數(shù)據(jù)一起被存儲起來。在選擇走Externalizable這條路時,,Java 只存儲有關(guān)每個被存儲類型的非常少的信息,。

每個接口的優(yōu)點和缺點

Serializable
接口

·
     優(yōu)點:內(nèi)建支持

·
     優(yōu)點:易于實現(xiàn)

·
     缺點:占用空間過大

·
     缺點:由于額外的開銷導(dǎo)致速度變比較慢

Externalizable
接口

·
     優(yōu)點:開銷較少(程序員決定存儲什么)

·
     優(yōu)點:可能的速度提升

·
     缺點:虛擬機(jī)不提供任何幫助,也就是說所有的工作都落到了開發(fā)人員的肩上,。

在兩者之間如何選擇要根據(jù)應(yīng)用程序的需求來定,。Serializable通常是最簡單的解決方案,但是它可能會導(dǎo)致出現(xiàn)不可接受的性能問題或空間問題,;在出現(xiàn)這些問題的情況下,,Externalizable可能是一條可行之路。

要記住一點,,如果一個類是可外部化的(Externalizable),,那么Externalizable方法將被用于序列化類的實例,即使這個類型提供了Serializable方法:

private void writeObject()
private void readObject()

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多