您好,登錄后才能下訂單哦!
什么是 java 序列化?什么情況下需要序列化?
序列化:將 Java 對象轉換成字節流的過程。
反序列化:將字節流轉換成 Java 對象的過程。
當 Java 對象需要在網絡上傳輸 或者 持久化存儲到文件中時,就需要對 Java 對象進行序列化處理。
序列化的實現:類實現 Serializable 接口,這個接口沒有需要實現的方法。實現 Serializable 接口是為了告訴 jvm 這個類的對象可以被序列化。
注意事項:
某個類可以被序列化,則其子類也可以被序列化
聲明為 static 和 transient 的成員變量,不能被序列化。static 成員變量是描述類級別的屬性,transient 表示臨時數據
反序列化讀取序列化對象的順序要保持一致
具體使用
package?constxiong.interview;? import?java.io.FileInputStream;import?java.io.FileOutputStream;import?java.io.IOException;import?java.io.ObjectInputStream;import?java.io.ObjectOutputStream;import?java.io.Serializable;? /** ?*?測試序列化,反序列化 ?*?@author?ConstXiong ?*?@date?2019-06-17?09:31:22 ?*/public?class?TestSerializable?implements?Serializable?{? private?static?final?long?serialVersionUID?=?5887391604554532906L; private?int?id; private?String?name;? public?TestSerializable(int?id,?String?name)?{ this.id?=?id; this.name?=?name; } @Override public?String?toString()?{ return?"TestSerializable?[id="?+?id?+?",?name="?+?name?+?"]"; }? @SuppressWarnings("resource") public?static?void?main(String[]?args)?throws?IOException,?ClassNotFoundException?{ //序列化 ObjectOutputStream?oos?=?new?ObjectOutputStream(new?FileOutputStream("TestSerializable.obj")); oos.writeObject("測試序列化"); oos.writeObject(618); TestSerializable?test?=?new?TestSerializable(1,?"ConstXiong"); oos.writeObject(test); //反序列化 ObjectInputStream?ois?=?new?ObjectInputStream(new?FileInputStream("TestSerializable.obj")); System.out.println((String)ois.readObject()); System.out.println((Integer)ois.readObject()); System.out.println((TestSerializable)ois.readObject()); } ? }
打印結果:
測試序列化 618 TestSerializable?[id=1,?name=ConstXiong]
喜歡這篇文章的話,可以給作者點個喜歡,點下關注,每天都會分享Java相關文章!
記得一定要關注我哦,會不定時的福利贈送,包括整理的面試題,學習資料,源碼等~~
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。