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

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

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

    Cyh的博客

    Email:kissyan4916@163.com
    posts - 26, comments - 19, trackbacks - 0, articles - 220

    控制對象的序列化和反序列化

    Posted on 2009-05-24 22:44 啥都寫點 閱讀(236) 評論(0)  編輯  收藏 所屬分類: J2SE
    關鍵技術:
    • 當被序列化的對象實現了java.io.Externalizable接口時,就可以靈活地控制它的序列化和反序列化過程。java.io.Externalizable接口繼承了java.io.Serializable。
    • Externalizable接口定義了兩個接口:writeExternal方法在序列化時被調用,可以在該方法中控制序列化的內容;readExternal方法在反序列化時被調用,可以在該方法中控制反序列化的內容。

    package book.io;

    import java.io.Externalizable;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInput;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutput;
    import java.io.ObjectOutputStream;
    import java.util.Date;

    /**
     * 控制序列化就是有選擇的序列化對象,而不是把所有對象的一切內容進行序列化。
     * SerializeObject演示了使用transit關鍵字可以控制變量不被序列化。
     * 本程序將演示通過實現Externalizable接口控制對象的序列化和反序列化。
     
    */
    public class SerializeControl {
        
    /**
         * 內部類,用于測試控制對象的序列化和反序列化。
         * 被序列化的對象必須實現Externalizable接口,該接口有2個方法:
         * writeExternal方法、readExternal方法。
         * 當序列化對象的時候,writeExternal方法會自動執行,所有的對象寫入操作由該方法控制。
         * 反序列化對象的時候,readExternal方法會自動執行,如果想訪問writeExternal寫入的內容,
         * 也只能在該方法里編寫恢復對象的代碼。
         
    */
        
    static class MyClassControl implements Externalizable{
             
    int serialClassInt;
             
    int a=3, b=4;
             
    public MyClassControl(){
                 System.out.println(
    "MyClass constructor!");
                 
    this.serialClassInt = 9;
             }
             
             
    public void show(){
                 System.out.println(
    "serialClassInt: " + serialClassInt);
             }
            
    //當序列化對象的時候,該方法自動被調用
            public void writeExternal(ObjectOutput out) throws IOException{
                System.out.println(
    "run writeExternal");
                
    //可以在序列化時寫非自身的變量,
                Date d = new Date();
                out.writeObject(d);
                
    //只序列化serialClassInt變量,a、b兩個變量不被序列化
                out.writeInt(this.serialClassInt);        
            }
            
    // 當反序列化對象的時候, 該方法自動被調用
            public void readExternal(ObjectInput in) throws IOException,
                    ClassNotFoundException {
                System.out.println(
    "run readExternal");
                Date d 
    = (Date) in.readObject();
                System.out.println(d);
                
    this.serialClassInt = in.readInt();
            } 
        }
        
    /**
         * 序列化對象
         
    */
        
    public static void serializable(String fileName) throws Exception{
            ObjectOutputStream out 
    = new ObjectOutputStream(new FileOutputStream(fileName));
            MyClassControl my1 
    = new MyClassControl();
            out.writeObject(my1);
            out.close();        
        }
        
    /**
         * 反序列化
         
    */
        
    public static void deserializable(String fileName)throws Exception{
            ObjectInputStream in 
    = new ObjectInputStream(new FileInputStream(fileName));
            MyClassControl my2 
    = (MyClassControl)in.readObject();
            my2.show();
            in.close();
        }

        
    public static void main(String[] args) throws Exception{
            String fileName 
    = "c:/temp/MyClassControl.ser";
            SerializeControl.serializable(fileName);
            SerializeControl.deserializable(fileName);
        }
    }



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 精品无码一级毛片免费视频观看 | 亚洲国产精品美女久久久久| 成人免费一级毛片在线播放视频| 亚洲制服丝袜一区二区三区| 在线看片人成视频免费无遮挡| 一本大道一卡二大卡三卡免费| 久久精品国产亚洲av日韩| 午夜免费不卡毛片完整版| 9i9精品国产免费久久| 久久久久亚洲AV无码专区体验| 香蕉高清免费永久在线视频| 美女无遮挡拍拍拍免费视频 | 黄色网址大全免费| 亚洲va在线va天堂va四虎| 全免费a级毛片免费**视频| 国产免费黄色无码视频 | 亚洲国产成人精品激情| 亚洲av午夜成人片精品电影| 一级毛片成人免费看免费不卡| 美国毛片亚洲社区在线观看 | 中文字幕精品亚洲无线码二区| 91九色老熟女免费资源站| 猫咪免费观看人成网站在线| 亚洲精品国产免费| 国产亚洲精品成人AA片新蒲金 | 亚洲а∨天堂久久精品9966 | 亚洲综合精品成人| 亚洲成AV人片在线观看WWW| 欧洲精品免费一区二区三区| 国产麻豆成人传媒免费观看| 亚洲精品女同中文字幕| 亚洲视频在线观看| 亚洲综合久久夜AV | 天天看片天天爽_免费播放| 美女被cao网站免费看在线看| 精品特级一级毛片免费观看| 亚洲剧场午夜在线观看| 久久亚洲免费视频| 亚洲性猛交XXXX| 亚洲国产精品无码久久青草 | 麻豆精品成人免费国产片|