对象序列化机制的理解
生活随笔
收集整理的這篇文章主要介紹了
对象序列化机制的理解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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();}}}總結
以上是生活随笔為你收集整理的对象序列化机制的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: struts2标签循环输出tr和td
- 下一篇: API验证