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