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