ObjectOutputStream内部使用了自己的一些标记,比如名称/对象索引等,这些是不一定。
另外,对象重新构造,基本上只是保证hashCode和equals一样,其内容并不保证完全跟原来一样,这要看Serializable的具体实现。你对Object使用byte[]的完全比较是不正确的用法。
另外,对象重新构造,基本上只是保证hashCode和equals一样,其内容并不保证完全跟原来一样,这要看Serializable的具体实现。你对Object使用byte[]的完全比较是不正确的用法。
我dump了一下传过来后object的byte[]内容,结果发现在client端把对象写成byte[]的时候与server端把对象写成byte[]的时候有一些区别,也就是有部分标记不相同。后来我又做了个测试。发现,如果是用 java.exe启动server 和 client,就没问题。而如果我在程序里调用jvm来启动,就出现这样的毛病。也就是,两端要么都是自己在程序中启动JVM进行处理,要么都是由java.exe来启动! 因为我做了个java启动的测试程序,所以发现毛病了。 可是两者的差别究竟在哪里,我还是不清楚!!!:(