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

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

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

    青菜貓(孫宇博客),青菜貓(孫宇博客),青菜貓(孫宇博客)http://www.javasdc.cn/
    posts - 29,  comments - 63,  trackbacks - 0
    1、序列化是干什么的?
    簡單說就是為了保存在內存中的各種對象的狀態(也就是實例變量,不是方法),并且可以把保存的對象狀態再讀出來。雖然你可以用你自己的各種各樣的方法來保 存object states,但是Java給你提供一種應該比你自己好的保存對象狀態的機制,那就是序列化。
    2.什么是反序列化
    和上面相反,就是把object states轉換為各種對象狀態
    3、什么情況下需要序列化
    a)當你想把的內存中的對象狀態保存到一個文件中或者數據庫中時候。(大家可以看看String類,肯定是會implements java.io.Serializable)
    b)當你想用套接字在網絡上傳送對象的時候;
    c)當你想通過RMI傳輸對象的時候、
    3、相關注意事項
    a)當一個父類實現序列化,子類自動實現序列化,不需要顯式實現Serializable接口
    b)序列化時,只對對象的狀態進行保存,而不管對象的方法
    c)對于關鍵詞transient,表示一個域不會被序列化。舉例說明
    public class Ca implements Serializable {
        private static final long serialVersionUID = 2161216686162584206L;
        int a;
        transient String b;
        Ca(int a,String b){
            this.a=a;
            this.b=b;
        }
        public String toString(){
               return "a = "+a+",b = "+b;
        }

    }

    在另外類中調用toString方法。
               Ca a = new Ca(1,"test");
               System.out.println(a);
               ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("c:\\test.out"));
               oos.writeObject(a);
               oos.reset();
               oos.close();
               ObjectInputStream ois = new ObjectInputStream(new FileInputStream("c:\\test.out"));
               a = (Ca)ois.readObject();
               System.out.println(a);  
    如果    transient String b;這樣出來的效果是
    a = 1,b = test
    a = 1,b = null
    去掉的話
    a = 1,b = test
    a = 1,b = test
    這樣就可以知道transient在反序列化的時候不能得到值,因為寫入的時候就沒有被序列化
    d)serialVersionUID   用來表明類的不同版本間的兼容性。如果你修改了此類,   要修改此值。否則以前用老版本的類序列化的類恢復時會出錯.
     在JDK中,可以利用JDK的bin目錄下的serialver.exe工具產生這個serialVersionUID,對于Test.class,執行命令:serialver   Test。  
    在項目中建議大家不要改serialVersionUID   這個值。,特別是要用的緩存。一旦serialVersionUID被改變,舊有的序列化對象就不能被被反序列化了,會拋出如下異常:
    java.io.InvalidClassException: MyObject; local class incompatible: stream classdesc serialVersionUID = a, local class serialVersionUID = b
       
    posted on 2010-08-24 10:57 青菜貓(孫宇) 閱讀(304) 評論(0)  編輯  收藏 所屬分類: java
    <2010年8月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    青菜貓(孫宇)結交天下朋友,在網上吸取知識..

    常用鏈接

    留言簿(16)

    隨筆分類

    隨筆檔案

    文章分類

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    青菜貓(孫宇博客),青菜貓(孫宇博客),青菜貓(孫宇博客)http://www.javasdc.cn/
    主站蜘蛛池模板: 亚洲fuli在线观看| 亚洲人成电影福利在线播放| 国产精品亚洲综合五月天| 麻豆成人精品国产免费| 日本中文一区二区三区亚洲 | 久久久久亚洲AV成人网人人网站| 久久亚洲色WWW成人欧美| 女人18毛片水最多免费观看| 中文字幕乱码亚洲无线三区| 成年女人看片免费视频播放器| 激情五月亚洲色图| 免费的一级黄色片| 猫咪免费人成在线网站| 99久久这里只精品国产免费| 77777午夜亚洲| 国产免费卡一卡三卡乱码| 人成午夜免费大片在线观看| 国产成人精品日本亚洲专区61 | 国产亚洲精久久久久久无码77777| 一个人看的www免费高清| 亚洲精品二区国产综合野狼| 久久国产乱子伦精品免费一| 亚洲一区无码中文字幕乱码| 四虎免费大片aⅴ入口| xxxx日本在线播放免费不卡| 精品久久久久久亚洲| 最近最好最新2019中文字幕免费| 精品亚洲国产成人| 亚洲狠狠爱综合影院婷婷| 成在人线av无码免费高潮喷水| 亚洲成在人线电影天堂色| 免费看香港一级毛片| 在线观看人成视频免费无遮挡| 亚洲国产精品yw在线观看| 免费久久精品国产片香蕉| 在线亚洲午夜片AV大片| 亚洲精品国产高清不卡在线| 色欲A∨无码蜜臀AV免费播| 国产亚洲婷婷香蕉久久精品| 国产一卡二卡四卡免费| 亚洲国产av一区二区三区丶|