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

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

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

    一花一四季,一頁一江湖

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

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      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以增強模式運行?

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

    兩種模式下差異比較

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

    功能                            Java模式                 增強模式

    公有類                         YES                             YES

    非公有類                     NO                              YES

    靜態(tài)內部類                  YES                             YES

    非靜態(tài)內部類              NO                              YES

    匿名靜態(tài)內部類           NO                              YES

    無缺省構造函數(shù)           NO                              YES

    有缺省構造函數(shù)           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序列化對象,對象必須要實現(xiàn)Serializable接口嗎?

           不必

    動態(tài)代理類能被序列化嗎?

           可以

    當對象發(fā)生改變時,XStream如何處理?

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

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

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

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

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

    XStream是線程安全的嗎?

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

    Feedback

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

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

    };
    }

    };  回復  更多評論
      


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


    網站導航:
     
    主站蜘蛛池模板: 午夜在线免费视频| 亚洲人成网站日本片| 美女视频黄频a免费大全视频| 国产亚洲综合网曝门系列| 亚洲va久久久噜噜噜久久天堂| 人成午夜免费大片在线观看| 免费在线观看黄色毛片| 老外毛片免费视频播放| 亚洲国产中文字幕在线观看| 亚洲神级电影国语版| 青草青草视频2免费观看| 亚洲国产精品一区二区三区久久| 爱情岛论坛亚洲品质自拍视频网站| 久久久久成人精品免费播放动漫| 韩国日本好看电影免费看| 亚洲电影一区二区三区| 一级视频在线免费观看| 中文字幕在线亚洲精品| a在线免费观看视频| 免费播放特黄特色毛片| 一级特黄a大片免费| 亚洲国产精彩中文乱码AV| 91大神在线免费观看| 亚洲制服丝袜精品久久| 国产婷婷高清在线观看免费 | 大学生美女毛片免费视频| 自拍偷自拍亚洲精品第1页| 国产免费一区二区视频| 亚洲另类春色国产精品| 国产片免费在线观看| 青青操免费在线视频| 亚洲国产亚洲综合在线尤物| 国产一级特黄高清免费大片| 亚洲AV无码久久久久网站蜜桃| 一级毛片全部免费播放| 亚洲中文无码mv| 热久久精品免费视频| 国产在线观看免费av站| 久久久久亚洲精品影视| 成人片黄网站A毛片免费| 一级毛片大全免费播放下载|