2

我一直在开发一个聊天客户端/服务器来熟悉java,而且我遇到了一个我不明白的逻辑错误。通过ObjectStreams发送的对象不保留其字段值?

我通过ObjectOutputStream(消息对象,请参阅ref)发送一个对象,该对象包含字段和另一个对象,其中有两个字段(用户对象)。在发送之前,使用调试器,我知道每个字段都已正确设置。在接收端,除了User类的某个字段之外,所有的东西都被正确设置了,它们被重置为程序中另一个用户对象的相同字段的值。我检查过他们是否由于某种原因没有共享引用,但是UserReceived.equals(UserInProgram)返回false(没有重写equals方法)。

注意:客户端中唯一一个用户的其他实例(伪字段似乎在删除收到的某个原因)位于另一个包中,并设置为私有。的代码

相关位:

消息类别,这是通过将流的发送和接收:http://codepaste.net/tiuxu7

用户类,字段“伪”似乎是因某种原因复位:http://codepaste.net/33m97j

显示我如何发送/接收对象的代码:http://codepaste.net/frxcv7

在这两者之间共享的服务器,客户端和库的完整源代码可以在github.com/TisButMe

+1

的链接不为我工作。如果你在你的问题中包含代码会更好。 – Kevin 2013-04-11 01:35:16

回答

0

听起来好像被重置的字段是static字段。 static字段不是序列化的,因为它们属于类而不是对象。有关更多信息,请参阅this quetion

0

略晚,但我只是碰到了这个问题,并解决它..只需拨打resetObjectOutputStream