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

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

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

    一花一四季,一頁一江湖

    停不下的腳步,伴著Java成長!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      3 Posts :: 2 Stories :: 2 Comments :: 0 Trackbacks

    XStream常見問題解析

    XStream所支持的JDK版本

    XStream支持JDK1.3及以后的版本

    在不同的JVMXStream運行會有差異嗎?

    XStream有兩種運行模式:存Java模式和增強模式。

    在存Java模式下,XStream在不同JVM中的運行是一樣的,但由于不同JVMreflection機制的支持有所差異,會導致一些類或字段將無法序列化。

    在增強模式下,XStream沒有上述限制,然而這種模式并不被所有的JVM所支持。

    哪種JVM支持XStream以增強模式運行?

           目前Sun、Apple、和HPJVM 1.4或更新的版本支持增強模式。所有的JVM均支持以存Java模式運行。

    兩種模式下差異比較

           僅以Sun JDK 1.4為例說明兩種模式下,XStream運行的差異。

    功能                            Java模式                 增強模式

    公有類                         YES                             YES

    非公有類                     NO                              YES

    靜態內部類                  YES                             YES

    非靜態內部類              NO                              YES

    匿名靜態內部類           NO                              YES

    無缺省構造函數           NO                              YES

    有缺省構造函數           YES                             YES

    Private字段                  YES                             YES

    Final字段                     NO                              YES

    如何序列化集合對象?

    參考下面的代碼示例:

    class Person {

      private String name;

      private List toys = new ArrayList();

      // ...

    }

     

    class Computer {

      String type;

    }

     

    class Car {

      String color;

    }

     

    xstream.alias("person", Person.class);

    xstream.alias("computer", Computer.class);

    xstream.alias("car", Car.class);

     

    Person person = new Person("Joe");

    person.addToy(new Computer("apple"));

    person.addToy(new Computer("spectrum"));

    person.addToy(new Car("blue"));

     

    String xml = xstream.toXML(joe);

     

    示例返回結果:

    <person>

      <name>Joe</name>

      <toys>

        <computer>

          <type>apple</type>

        </computer>

        <computer>

          <type>spectrum</type>

        </computer>

        <car>

          <color>blue</color>

        </car>

      </toys>

    </person>

    如果使用XStream序列化對象,對象必須要實現Serializable接口嗎?

           不必

    動態代理類能被序列化嗎?

           可以

    當對象發生改變時,XStream如何處理?

           當對象新增加一個字段時,XStream在反序列化舊版本的對象時,會忽略這個新增的字段,不作任何處理。

           當對象刪除一個字段時,XStream在反序列化舊版本的對象(包含該字段)時,會拋出異常信息。

           如果對象的字段改名了,將被視作刪除了一個字段,然后再新增一個字段。

           對于更高級別的類移植,我們在發送信息到XStream之前,必須要對XML對象進行預處理。

           XStream還在不斷的開發過程中,相信在未來的版本中,上述操作會更成熟,更容易。

    XStream是線程安全的嗎?

           是的。一旦XStream實例已經被創建并配置后,它能夠在多線程中共享允許對象并發的進行序列化和反序列化操作。
    posted on 2006-02-16 13:25 魔戒 閱讀(3412) 評論(1)  編輯  收藏

    Feedback

    # re: []XStream常見問題解析 2008-12-08 14:15 epinszteinic
    對象發生改變時的解決辦法:

    XStream xstream = new XStream(new DomDriver()) {

    protected MapperWrapper wrapMapper(MapperWrapper next) {
    return new MapperWrapper(next) {

    public boolean shouldSerializeMember(Class definedIn, String fieldName) {
    return definedIn != Object.class ? super.shouldSerializeMember(definedIn, fieldName) : false;
    }

    };
    }

    };  回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产精品入口麻豆免费观看| 成在人线av无码免费高潮喷水| 1000部羞羞禁止免费观看视频 | 日韩版码免费福利视频| 婷婷精品国产亚洲AV麻豆不片 | 亚洲第一黄色网址| 精品在线视频免费| 亚洲精品久久久www| 国产免费久久久久久无码| 亚洲国产精品无码专区| 久久大香伊焦在人线免费| 91嫩草私人成人亚洲影院| 亚洲一区免费在线观看| 亚洲中文无码亚洲人成影院| 日韩中文字幕免费| 日本在线观看免费高清| 久久亚洲色一区二区三区| 免费91最新地址永久入口| 78成人精品电影在线播放日韩精品电影一区亚洲 | 国产高清视频免费在线观看| 亚洲日产韩国一二三四区| 久久青草免费91观看| 亚洲国产精品一区二区久| 久久WWW免费人成人片| 美女扒开尿口给男人爽免费视频 | 亚洲AV无码第一区二区三区| 1000部拍拍拍18勿入免费视频软件| 国产精品亚洲精品| 免费午夜爽爽爽WWW视频十八禁| 国产精品青草视频免费播放| 久久夜色精品国产噜噜亚洲AV| 成年女人免费视频播放体验区| 暖暖免费中文在线日本| 亚洲AV区无码字幕中文色| 免费无码AV片在线观看软件| 无码AV动漫精品一区二区免费| 久久亚洲AV成人无码| 国产一级淫片视频免费看| 国产精品免费高清在线观看| 伊人久久五月丁香综合中文亚洲| 免费国产一级特黄久久|