0

次のコードは、まったく予期していなかった例外をスローします。

        long now = System.currentTimeMillis();
        java.sql.Time t1 = new java.sql.Time(now);
        String s1 = new XStream().toXML(t1);
        java.sql.Time t2 = (java.sql.Time) new XStream().fromXML(s1);
        if(!t1.equals(t2)) throw new IllegalArgumentException();

XStream を参照してください

問題は、なぜですか、それは XStream のバグですか?

4

1 に答える 1

1

Google で簡単に検索すると、XStream がこのクラスを使用して java.sql.Time をシリアル化することがわかります

次の警告に注意してください。

java.sql.Time をテキストに変換します。警告: 秒未満の粒度は失われます。

したがって、偶数秒に切り捨てられているため、元の (ミリ秒がある) との比較は失敗します。

于 2012-08-11T19:00:42.530 に答える