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

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

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

    J2EE社區

    茍有恒,何必三更起五更眠;
    最無益,只怕一日曝十日寒.
    posts - 241, comments - 318, trackbacks - 0, articles - 16

    java中的Serializable接口的作用

    Posted on 2008-08-12 22:53 xcp 閱讀(3643) 評論(1)  編輯  收藏 所屬分類: JAVA

     

    Object serialization的定義:
    Object serialization 允許你將實現了Serializable接口的對象轉換為字節序列,這些字節序列可以被完全存儲以備以后重新生成原來的對象。

    serialization不但可以在本機做,而且可以經由網絡操作(RMI)。這個好處是很大的----因為它自動屏蔽了操作系統的差異,字節順序(用Unix下的c開發過網絡編程的人應該知道這個概念)等。比如,在Window平臺生成一個對象并序列化之,然后通過網絡傳到一臺Unix機器上,然后可以在這臺Unix機器上正確地重構這個對象。


    Object serialization主要用來支持2種主要的特性:
    1。Java的RMI(remote method invocation).RMI允許象在本機上一樣操作遠程機器上的對象。當發送消息給遠程對象時,就需要用到serializaiton機制來發送參數和接收返回直。

    2。Java的JavaBeans. Bean的狀態信息通常是在設計時配置的。Bean的狀態信息必須被存起來,以便當程序運行時能恢復這些狀態信息。這也需要serializaiton機制。



    二。sakulagi和rollingpig說的持久化我也說一下。
    我覺得你們說的應該是英文里的persistence.但是Java語言里現在只支持lightweight persistence,就是輕量級持久化,這是通過serialization機制來實現的。

    persistence是指一個對象的生命周期不由程序是否執行來決定,即使是在程序終止時這個對象也存在。它把一個serializable的對象寫到磁盤(本機或其他機器上的非RAM存儲器),并在程序重新調用時再讀取對象到通常的RAM存儲器。

    為什么說Java的serialization機制實現的是lightweight persistence?因為你必須顯式的序列化和反序列化程序里的對象;而不是直接由一個關鍵詞來定義一個對象是序列化的然后由系統做相應的處理。


    下面是關于序列化的一個實例:

    程序名稱:SerializationDemo.java
    程序主題:實現對象的序列化和反序列化
    程序說明:該程序由實例化一個MyClass類的對象開始,該對象有三個實例變量,類型分別為String、int、double,是希望存儲和恢復的信息。

    代碼內容
    import java.io.*

    public class SerializationDemo
    public static void main(String args[])

    //Object serialization 
    try
    MyClass object1
    =new MyClass("Hello",-7,2.7e10); 
    System.out.println(
    "object1:"+object1); 
    FileOutputStream fos
    =new FileOutputStream("serial"); 
    ObjectOutputStream oos
    =new ObjectOutputStream(fos); 
    oos.writeObject(object1); 
    oos.flush(); 
    oos.close(); 
    }
     
    catch(Exception e)
    System.out.println(
    "Exception during serialization:"+e); 
    System.exit(
    0); 
    }
     

    //Object deserialization 
    try
    MyClass object2; 
    FileInputStream fis
    =new FileInputStream("serial"); 
    ObjectInputStream ois
    =new ObjectInputStream(fis); 
    object2
    =(MyClass)ois.readObject(); 
    ois.close(); 
    System.out.println(
    "object2:"+object2); 
    }
     
    catch(Exception e)
    System.out.println(
    "Exception during deserialization:"+e); 
    System.exit(
    0); 
    }
     
    }
     
    }
     

    class MyClass implements Serializable
    String s; 
    int i; 
    double d; 
    public MyClass(String s,int i,double d)
    this.s=s; 
    this.i=i; 
    this.d=d; 
    }
     
    public String toString()
    return "s="+s+";i="+i+";d="+d; 
    }
     
    }
     
    程序運行結果:object1和object2的實例變量是一樣的,輸出如下:[code:1:a55efb5f91]object1:s=Hello;i=-7;d=2.7E10
    object2:s=Hello;i=-7;d=2.7E10



    名稱: ?4C.ESL | .↗Evon
    口號: 遇到新問題?先要尋找一個方案乄而不是創造一個方案こ
    mail: 聯系我


    Feedback

    # re: java中的Serializable接口的作用   回復  更多評論   

    2013-07-03 09:19 by www.dsprint.cn(武漢印刷)
    學習了~
    主站蜘蛛池模板: 久久精品国产这里是免费| 亚洲国产精品美女久久久久| 久久久久久久久久国产精品免费 | 亚洲AV永久无码精品一区二区国产| 免费国产成人午夜私人影视| 亚洲AV无码一区二区三区在线 | 成年女人喷潮毛片免费播放| 亚洲乱色伦图片区小说| 无码国模国产在线观看免费| 亚洲成亚洲乱码一二三四区软件| 亚洲av无码专区青青草原| 亚洲网站免费观看| 亚洲乱码无码永久不卡在线| 在线观看免费播放av片| 亚洲精品免费在线视频| 好爽又高潮了毛片免费下载| 精品一区二区三区无码免费直播| 999久久久免费精品国产| 亚洲av午夜成人片精品网站 | 亚洲精品无码av天堂| 亚洲熟妇AV一区二区三区浪潮 | 国产精品区免费视频| 亚洲国产日韩在线人成下载| 日本免费一区二区在线观看| 亚洲AV香蕉一区区二区三区| 亚洲国产成人精品91久久久| 一区二区在线免费观看| 亚洲熟妇AV乱码在线观看| 亚洲人成色77777在线观看大| 久久国产乱子伦精品免费一 | 91在线视频免费看| 免费无码国产V片在线观看| 免费黄色福利视频| 男人扒开添女人下部免费视频| 久久久久亚洲AV成人无码| 一区二区三区免费高清视频| 青青草原精品国产亚洲av| 国产一区二区三区免费在线观看| 国产精品高清视亚洲一区二区 | 久久不见久久见免费影院 | 亚洲成AV人网址|