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

一个快速的谷歌搜索给出 XStream 使用这个类来序列化 java.sql.Time:http: //x-stream.github.io/javadoc/com/thoughtworks/xstream/converters/extended/SqlTimeConverter.html

注意警告:

将 java.sql.Time 转换为文本。警告:任何小于秒的粒度都会丢失。

所以它被截断到偶数秒,因此与原始(毫秒)的比较失败。

于 2012-08-11T19:00:42.530 回答