Я разрабатывал клиент/сервер чата, чтобы познакомиться с java, и столкнулся с логической ошибкой, которую не понимаю.
Я отправляю объект через ObjectOutputStream (объект сообщения, см. ссылку), который содержит поля и другой объект, который имеет 2 поля (объект пользователя). Перед отправкой с помощью отладчика узнаю, что каждое поле настроено правильно. На принимающей стороне все настроено правильно, кроме одного из полей класса User, которое каким-то образом сбрасывается до значения, которое имеет такое же поле другого объекта User программы. Я проверил, не делились ли они по какой-либо причине ссылками, но UserReceived.equals(UserInProgram) возвращает false (без переопределения метода equals).
Примечание. Единственный другой экземпляр пользователя в клиенте (псевдополе которого по какой-то причине стирает полученное) находится в другом пакете и имеет значение private.
Соответствующие биты кода:
Класс сообщения, который отправляется и принимается через потоки: http://codepaste.net/tiuxu7
Класс пользователя, поле которого "псевдо" по какой-то причине кажется сброшенным: http://codepaste.net/33m97j
Код, показывающий, как я отправляю/получаю объекты: http://codepaste.net/frxcv7
Полный исходный код сервера, клиента и библиотеки, совместно используемых этими двумя, можно найти на github.com/TisButMe.