<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);
        }
    }



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 暖暖日本免费中文字幕| 免费黄色app网站| 亚洲情A成黄在线观看动漫软件| 四虎影院在线免费播放| 黄色短视频免费看| 亚洲一区在线免费观看| 亚洲精品第一国产综合精品99| 久久青草91免费观看| 亚洲av无码无线在线观看| 亚洲国产精品无码专区| 日本免费一区二区三区最新| 韩日电影在线播放免费版| 一本色道久久88亚洲精品综合| 国产自偷亚洲精品页65页| 久久精品女人天堂AV免费观看| 国产日韩精品无码区免费专区国产| 亚洲一级大黄大色毛片| 国产精品亚洲а∨无码播放 | 亚洲成av人在片观看| 日本免费一区二区三区| 亚洲AV无码精品国产成人| 亚洲午夜未满十八勿入| 国产免费拔擦拔擦8x| 免费观看无遮挡www的小视频| 亚洲第一视频在线观看免费| 久久亚洲国产成人影院| 久久伊人久久亚洲综合| 亚洲日韩中文在线精品第一| 成人毛片免费播放| 91精品手机国产免费| 中国黄色免费网站| 黄页网站在线免费观看| 国产成人亚洲综合网站不卡| 亚洲午夜未满十八勿入| 亚洲精品无码午夜福利中文字幕 | 国产精品视频免费观看| 青柠影视在线观看免费高清| 香蕉视频免费在线| 亚洲欧美国产日韩av野草社区| 91在线精品亚洲一区二区| 国产av无码专区亚洲av桃花庵|