0

我想知道为什么当我使用 table 序列化内存中的同一个对象时:

ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
        ObjectOutputStream stream = new ObjectOutputStream(byteOutput);
stream.writeObject(m.view()); //view return a string


        stream.flush();
        stream.close();
        byteOutput.flush();
        byteOutput.close(); 

我多次运行我的程序,我得到不同的结果(差别不大,但仍然不同)

execution 1 :4497
execution 3 :4500
execution 4 :4500
execution 5 :4494 

m : 是一个包含其他类的另一个对象的对象。我不能在这里列出所有类,它是一个大框架,string序列化是一样的!

4

2 回答 2

1

假设您的对象m来自您的代码,您似乎有不同的状态 ( overhead)。由于序列化是递归的,因此不仅您的对象,而且它包含的所有其他对象都必须相同。

请发布更多信息m及其连接以overhead获得更全面的答案。

于 2012-04-24T09:14:51.250 回答
0

您的执行之间有些不同,例如,您是否使用对象中的当前时间?

您可以向我们展示更多上下文,或者尝试自己找出不同之处,但只要您说没有什么不同,但结果您找不到解释...

尽量减少问题,你说 m.view() 总是产生相同的结果,你怎么知道?如果它总是返回相同的结果,将结果硬编码在一个字符串中,并向我们展示相同的字符串序列化多次会给出不同的结果......

于 2012-04-24T10:55:40.380 回答