您好,登錄后才能下訂單哦!
這篇文章主要為大家詳細(xì)介紹了java序列化的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
序列化的實(shí)現(xiàn):
將需要被序列化的類實(shí)現(xiàn)Serializable接口,該接口沒有需要實(shí)現(xiàn)的方法,implements Serializable
只是為了標(biāo)注該對(duì)象是可被序列化的,然后使用一個(gè)輸出流(如:FileOutputStream
)來構(gòu)造一個(gè)ObjectOutputStream
(對(duì)象流)對(duì)象,接著,使用ObjectOutputStream
對(duì)象的writeObject(Object obj)
方法就可以將參數(shù)為obj的對(duì)象寫出(即保存其狀態(tài)),要恢復(fù)的話則用輸入流。
對(duì)象序列化
java.io.ObjectOutputStream
代表對(duì)象輸出流,它的writeObject(Object obj)
方法可對(duì)參數(shù)指定的obj對(duì)象進(jìn)行序列化,把得到的字節(jié)序列寫到一個(gè)目標(biāo)輸出流中。只有實(shí)現(xiàn)了Serializable
和Externalizable
接口的類的對(duì)象才能被序列化。
java.io.ObjectInputStream
代表對(duì)象輸入流,它的readObject()
方法從一個(gè)源輸入流中讀取字節(jié)序列,再把它們反序列化為一個(gè)對(duì)象,并將其返回。
代碼示例:
import java.io.*; import java.util.Date; public class ObjectSaver { public static void main(String[] args) throws Exception { /*其中的 D:\\objectFile.obj 表示存放序列化對(duì)象的文件*/ //序列化對(duì)象 ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("D:\\objectFile.obj")); Customer customer = new Customer("王麻子", 24); out.writeObject("你好!"); //寫入字面值常量 out.writeObject(new Date()); //寫入匿名Date對(duì)象 out.writeObject(customer); //寫入customer對(duì)象 out.close(); //反序列化對(duì)象 ObjectInputStream in = new ObjectInputStream(new FileInputStream("D:\\objectFile.obj")); System.out.println("obj1 " + (String) in.readObject()); //讀取字面值常量 System.out.println("obj2 " + (Date) in.readObject()); //讀取匿名Date對(duì)象 Customer obj3 = (Customer) in.readObject(); //讀取customer對(duì)象 System.out.println("obj3 " + obj3); in.close(); } } class Customer implements Serializable { private String name; private int age; public Customer(String name, int age) { this.name = name; this.age = age; } public String toString() { return "name=" + name + ", age=" + age; } }
執(zhí)行結(jié)果:
說明:
1、讀取對(duì)象的順序與寫入時(shí)的順序要一致。
2、對(duì)象的默認(rèn)序列化機(jī)制寫入的內(nèi)容是:對(duì)象的類,類簽名,以及非瞬態(tài)和非靜態(tài)字段的值。
關(guān)于java序列化的實(shí)現(xiàn)方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的參考價(jià)值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。