中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java的序列化怎么實現

發布時間:2020-06-28 09:52:26 來源:億速云 閱讀:166 作者:Leah 欄目:編程語言

本篇文章為大家展示了java的序列化怎么實現,代碼簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

簡要解釋:

序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化后的對象進行讀寫操作,也可將流化后的對象傳輸于網絡之間。

序列化是為了解決在對對象流進行讀寫操作時所引發的問題。序列化的實現:將需要被序列化的類實現Serializable接口,該接口沒有需要實現的方法,implements Serializable只是為了標注該對象是可被序列化的,然后使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接著,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數為obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。

詳細解釋:

當兩個進程在進行遠程通信時,彼此可以發送各種類型的數據。無論是何種類型的數據,都會以二進制序列的形式在網絡上傳送。發送方需要把這個Java對象轉換為字節序列,才能在網絡上傳送;接收方則需要把字節序列再恢復為Java對象。

只能將支持 java.io.Serializable 接口的對象寫入流中。每個 serializable 對象的類都被編碼,編碼內容包括類名和類簽名、對象的字段值和數組值,以及從初始對象中引用的其他所有對象的閉包。

1.概念

序列化:把Java對象轉換為字節序列的過程。

反序列化:把字節序列恢復為Java對象的過程。

2.用途

對象的序列化主要有兩種用途:

(1)把對象的字節序列永久地保存到硬盤上,通常存放在一個文件中;

(2)在網絡上傳送對象的字節序列。

3.對象序列化

序列化API

java.io.ObjectOutputStream代表對象輸出流,它的writeObject(Object obj)方法可對參數指定的obj對象進行序列化,把得到的字節序列寫到一個目標輸出流中。只有實現了Serializable和Externalizable接口的類的對象才能被序列化。

java.io.ObjectInputStream代表對象輸入流,它的readObject()方法從一個源輸入流中讀取字節序列,再把它們反序列化為一個對象,并將其返回。

代碼示例

import java.io.*;
import java.util.Date;

public class ObjectSaver {
   public static void main(String[] args) throws Exception {
        /*其中的  D:\\objectFile.obj 表示存放序列化對象的文件*/

        
        //序列化對象
         ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("D:\\objectFile.obj"));
         Customer customer = new Customer("王麻子", 24);    
         out.writeObject("你好!");    //寫入字面值常量
         out.writeObject(new Date());    //寫入匿名Date對象
         out.writeObject(customer);    //寫入customer對象
         out.close(); 
         
         //反序列化對象
         ObjectInputStream in = new ObjectInputStream(new FileInputStream("D:\\objectFile.obj"));
         System.out.println("obj1 " + (String) in.readObject());    //讀取字面值常量
         System.out.println("obj2 " + (Date) in.readObject());    //讀取匿名Date對象
         Customer obj3 = (Customer) in.readObject();    //讀取customer對象
         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;
     }
 }

4.說明

讀取對象的順序與寫入時的順序要一致。

對象的默認序列化機制寫入的內容是:對象的類,類簽名,以及非瞬態和非靜態字段的值。

上述內容就是java的序列化怎么實現,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黑龙江省| 怀仁县| 余干县| 通河县| 闵行区| 云南省| 沂南县| 咸阳市| 金寨县| 阳朔县| 湾仔区| 文安县| 湛江市| 思南县| 兴安盟| 通化市| 湘潭县| 嘉义市| 松原市| 太和县| 浦江县| 威宁| 泾源县| 呼图壁县| 广宗县| 玛沁县| 玉溪市| 曲阜市| 成武县| 昌吉市| 安岳县| 宝清县| 南宁市| 襄垣县| 德庆县| 武隆县| 沭阳县| 梁山县| 武汉市| 横山县| 区。|