我一直在开发一个聊天客户端/服务器来熟悉 java,但我遇到了一个我不理解的逻辑错误。
我正在通过 ObjectOutputStream (消息对象,请参见参考文献)发送一个对象,该对象包含字段和另一个对象,该对象具有 2 个字段(用户对象)。在发送之前,使用调试器,我知道每个字段都已正确设置。在接收端,一切都正确设置,除了 User 类的一个字段,它以某种方式重置为程序的另一个 User 对象的相同字段的值。我检查了他们是否由于某种原因没有共享引用,但是 UserReceived.equals(UserInProgram) 返回 false (没有覆盖 equals 方法)。
注意:客户端中用户的唯一其他实例(该伪字段似乎正在擦除由于某种原因收到的那个)在另一个包中,并设置为私有。
相关代码:
消息类,通过流发送和接收:http: //codepaste.net/tiuxu7
用户类,“伪”字段似乎由于某种原因被重置: http: //codepaste.net/33m97j
显示我如何发送/接收对象的代码: http: //codepaste.net/frxcv7
这两者之间共享的服务器、客户端和库的完整源代码可以在 github.com/TisButMe 找到