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



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 国产99久久亚洲综合精品| 亚洲日韩国产AV无码无码精品| 国产亚洲美女精品久久久久| 女人被男人桶得好爽免费视频| 亚洲天堂福利视频| 99无码人妻一区二区三区免费| 亚洲成a人片7777| 国产99视频精品免费观看7| 亚洲一卡2卡3卡4卡乱码 在线| 日本三级2019在线观看免费| 亚洲日本乱码一区二区在线二产线| 9277手机在线视频观看免费| 亚洲国产成人手机在线电影bd| 免费大片黄在线观看yw| 亚洲真人无码永久在线观看| 日本一道高清不卡免费| 一级毛片人与动免费观看| 亚洲毛片αv无线播放一区| 91人成网站色www免费下载| 亚洲丰满熟女一区二区v| 免费观看美女裸体网站| 日日躁狠狠躁狠狠爱免费视频| 亚洲无码日韩精品第一页| 成全视频免费观看在线看| 亚洲第一页在线视频| 青青草国产免费久久久91| 全黄A免费一级毛片| 亚洲AV乱码久久精品蜜桃| 国产片AV片永久免费观看| 亚洲av乱码中文一区二区三区| 久久久久亚洲AV成人网| 中文字幕免费在线看线人| 精品一区二区三区无码免费直播| 亚洲日韩乱码中文无码蜜桃臀网站| 猫咪免费人成网站在线观看| 亚洲日韩中文字幕一区| 亚洲午夜久久久久妓女影院 | 国产成人 亚洲欧洲| 亚洲一区无码精品色| 久久久久久精品免费免费自慰| 亚洲第一街区偷拍街拍|