Java IO框架总揽--ObjectInputStream ObjectOutputStream源码解读
生活随笔
收集整理的這篇文章主要介紹了
Java IO框架总揽--ObjectInputStream ObjectOutputStream源码解读
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
ObjectInputStream與ObjectOutputStream的作用是:對基本數(shù)據(jù)和對象進(jìn)行序列化操作進(jìn)行支持。其中ObjectInputStream對象提供對基本數(shù)據(jù)和對象對持久存儲,當(dāng)我們需要讀取這些存儲這些基本數(shù)據(jù)或?qū)ο髸r,可以創(chuàng)建文件輸入流對應(yīng)的ObjectInputStream,進(jìn)而讀取這些基本數(shù)據(jù)或?qū)ο蟆P蛄谢嘘P(guān)的基礎(chǔ)知識:
1 需要序列化的類必須實(shí)現(xiàn)java.io.Serializable接口,否則會拋出NotSerializableException異常。
2 如果檢測到反序列化的類的serialVersionUID和對象二進(jìn)制流的serialVersionUID不同,則會拋出異常。
3 Java序列化會將一個類中包含的引用中的所有的成員變量保存下來,所以里面的引用類型也要實(shí)現(xiàn)java.io.Serializable的接口。
4 對于不用采用默認(rèn)序列化或無需序列化的成員變量,可以添加transient關(guān)鍵字,并不是說添加了transient關(guān)鍵字就一定不能序列化。
5 每一個類可以實(shí)現(xiàn)readObject、writeObject等方法實(shí)現(xiàn)自己的序列化策略,即使是transient修飾的成員變量也可以手動調(diào)用ObjectOutputStream的write*等方法,將成員變量序列化。ObjectOutputStream 有關(guān)方法1 public ObjectOutputStream(OutputStream out) throws IOException {}
* 創(chuàng)建一個ObjectOutputStream去寫入指定的OutputStream,此構(gòu)造函數(shù)將序列化流頭寫入底層流,調(diào)用者需要立即刷新流,以確保用于接收ObjectInputStreams的構(gòu)造函數(shù)在讀取該頭時不會阻塞。2 protected ObjectOutputStream() throws IOException, SecurityException {}
* 為完全重新實(shí)現(xiàn)ObjectOutputStream的子類提供一種方法,使其不必分配僅由ObjectOutputStream的實(shí)現(xiàn)使用的私有數(shù)據(jù)3 public void useProtocolVersion(int version) throws IOException {}
* 指定在編寫流時使用的流協(xié)議版本4 public final void writeObject(Object obj) throws IOException {}
* 將指定的對象寫入ObjutoExtStudio流,對象的類、類的簽名、類及其所有超類型的非瞬態(tài)和非靜態(tài)字段的值都可以通過該方法寫入,重寫writeObject和readObject方法可以將默認(rèn)的序列號重寫,該對象引用的對象是通過傳遞方式編寫的,以便ObjectInputStream可以重構(gòu)等效的、完整的對象。
總結(jié)
以上是生活随笔為你收集整理的Java IO框架总揽--ObjectInputStream ObjectOutputStream源码解读的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于KVM虚拟化搭建lamp
- 下一篇: Java核心(三)并发中的线程同步与锁