<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    天空是藍色的

    做好軟件為中國 #gcc -c helloworld.c -o helloworld.o //編譯目標文件 #gcc helloworld.o -o helloworld //編譯成可執行exe #helloworld //運行exe
    數據加載中……
    Java對象序列化機制

    對象序列化機制對于需要將對象的狀態保存到文件中,而后能夠通過讀入對象狀態來重新構造對象,恢復程序狀態,或者使用套接字在網絡上傳送對象的程序來說,是很有用的。通過讓類實現java.io.Serializable 接口可以將類序列化。這個接口是一個制造者(marker)接口。也就是說,對于要實現它的類來說,該接口不需要實現任何方法。它主要用來通知Java虛擬機(JVM)需要將一個對象序列化。

    也叫串行化,對象的域轉化為緊湊的2進制形式,是對象持久化的方法之一。

    《實現類的序列化--例子將Vector對象壓入標準流》出處 CN-JAVA原創:jackliu

    Vector對象是一個很靈活的java數據結構,在實際編程中,有時需要我們將一個Vector對象傳遞給另一個Java程序并保持Vector的數據結構狀態,這時,我們可以將需要傳遞的對象實現java.io.Serializable接口,序列化這個類,由于序列化本身就是允許一個對象在虛擬機之間傳送(或者經過一段空間,如在RMI中;或者經過一段時間,比如數據流被保存到一個文件中)。 關于類的序列化請查閱相關資料,本篇不在敘述,下面使用一個簡單的程序說明如何把一個Vector對象序列化并放到一個流中(為了測試方便,這里放到一個文件流中,如果換成一個套接字就可以把對象發送給遠程請求者)

    程序1:把一個Vector對象存儲到一個testvector.obj文件里(模擬server socket處理)

     1import java.io.*;
     2import java.util.*;
     3
     4class TestVector implements java.io.Serializable{
     5        private Vector vect=new Vector();
     6        
     7        public void add(Object obj){
     8                this.vect.add(obj);
     9        }

    10        public void print(){
    11                System.out.println(this.vect);
    12        }

    13        public static void main(String[] args){
    14                try {
    15                        /* 將對象寫到一個文件里 */
    16                        FileOutputStream objfile = new FileOutputStream("testvector.obj");
    17                        /* 創建一個輸出流 */
    18                        ObjectOutputStream p = new ObjectOutputStream(objfile);
    19                        /* 創建一個TestVector對象 */
    20                        TestVector tv =new TestVector();
    21                        /*給Vector寫入幾String個對象*/
    22                        tv.add("One");
    23                        tv.add("Two");
    24                        tv.add("Three");
    25                        p.writeObject(tv); // 把tv寫入流
    26                        p.flush();
    27                        objfile.close();    // 關閉文件對象
    28                }
     catch (Exception e) {
    29                        e.printStackTrace();
    30                }

    31        }

    32}

    33

    編譯程序1,運行后,在當前目錄生成一個testvector.obj文件,這個文件里存放了TestVector類的數據


    程序2:從testvector.obj文件里獲取TestVector對象(模擬socke客戶端)

     1import java.io.*;
     2import java.util.*;
     3
     4class ReadVectorObj{
     5        public static void  main (String[] args){
     6                try {
     7                        /* 打開文件,讀取Vector 存放的對象數據 */
     8                        FileInputStream objfile = new FileInputStream("testvector.obj");
     9                        ObjectInputStream q = new ObjectInputStream(objfile);
    10                        /* 獲取對象原始數據 */
    11                        TestVector myvector = (TestVector)q.readObject();
    12                        myvector.print(); 
    13                }
     catch (Exception e) {
    14                        e.printStackTrace();   
    15                }

    16        }

    17}


    編譯程序2,運行后,讀取testvector.obj文件,根據內容構建出原始的TestVector類。

    posted on 2005-11-09 09:52 bluesky 閱讀(793) 評論(0)  編輯  收藏 所屬分類: 基礎知識

    主站蜘蛛池模板: 国产jizzjizz视频免费看 | 最近免费中文字幕4| 亚洲av日韩专区在线观看| 亚洲精品国产福利一二区| 天堂在线免费观看| 亚洲伊人久久精品| 久久久久久A亚洲欧洲AV冫| 最近免费中文字幕大全免费| 亚洲av无码兔费综合| 亚洲精品无码专区在线在线播放 | 欧洲亚洲国产清在高| 最近2019中文字幕mv免费看| rh男男车车的车车免费网站| 亚洲第一成年人网站| 亚洲成A人片在线观看无码3D| 日韩免费人妻AV无码专区蜜桃 | 免费毛片网站在线观看| 成人无码WWW免费视频| 亚洲一线产区二线产区区| 久久亚洲国产欧洲精品一| 国产成人免费手机在线观看视频| 久久精品国产免费| 免费一区二区三区在线视频 | 国产亚洲精品免费视频播放| 国产精品亚洲专区在线观看| 亚洲精品美女久久久久99| 韩国18福利视频免费观看| 久久一本岛在免费线观看2020| 日韩欧美亚洲中文乱码| 亚洲第一精品电影网| 亚洲精品卡2卡3卡4卡5卡区| 香蕉高清免费永久在线视频| 88av免费观看| 岛国精品一区免费视频在线观看| 亚洲欧洲国产综合AV无码久久| 亚洲综合色丁香麻豆| 亚洲日韩中文字幕在线播放| 国产精品免费视频网站| 国产人在线成免费视频| 中文字幕成人免费视频| 国产色爽免费无码视频|