日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对象序列化机制的理解

發布時間:2025/3/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对象序列化机制的理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.對象的序列化機制:
對象序列化機制允許把內存中的Java對象轉換成平臺無關的二進制流,從而允許把這種二進制流持久地保存在磁盤上,或通過網絡將這種二進制流傳輸到另一個網絡節點。
//當其它程序獲取了這種二進制流,就可以恢復成原來的Java對象。

即序列化過程 / 反序列化過程:
序列化過程: 將內存中的java對象保存到磁盤中或通過網絡傳輸出去,使用ObjectOutputStream實現;
反序列化過程: 將磁盤文件中的對象還原為內存中的java對象;使用ObjectInputStream實現;

2.對象要想實現序列化,需要滿足的條件?

a. 實現接口:Serializable 標識接口
b. 對象所在的類提供常量:序列版本號serialVersionUID (public static final long);
c. 要求對象的屬性也必須是可序列化的。(基本數據類型、String:本身就是可序列化的);
tips:ObjectInputStream / ObjectOutputStream不能序列化static和transient修飾的成員變量。

tips:開發中一般都用String實現序列化。

序列化過程代碼實現:

/*序列化過程:將內存中的java對象保存到磁盤中或通過網絡傳輸出去使用ObjectOutputStream實現*/@Testpublic void testObjectOutputStream(){ObjectOutputStream oos = null;try {//1.oos = new ObjectOutputStream((new FileOutputStream(new File("Object.dat"))));//2.oos.writeObject(new String("Beijing"));oos.writeObject(new Person("Tom",23));oos.flush();oos.flush();//刷新操作} catch (IOException e) {e.printStackTrace();} finally {//3.try {oos.close();} catch (IOException e) {e.printStackTrace();}}}

反序列化過程代碼實現:

/*反序列化:將磁盤文件中的對象還原為內存中的java對象使用ObjectInputStream實現*/@Testpublic void testObjectInputStream(){ObjectInputStream ois = null;try {ois = new ObjectInputStream(new FileInputStream("Object.dat"));Object obj = ois.readObject();String str = (String)obj;Person p = (Person)ois.readObject();System.out.println(str);System.out.println(p);} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();} finally {try {ois.close();} catch (IOException e) {e.printStackTrace();}}}

總結

以上是生活随笔為你收集整理的对象序列化机制的理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。