Объект, отправленный через ObjectStreams, не сохраняет значения своих полей?

Я разрабатывал клиент/сервер чата, чтобы познакомиться с 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.


person Thomas P    schedule 22.03.2013    source источник
comment
Ссылки у меня не работают. Было бы лучше, если бы вы включили код в свой вопрос.   -  person Kevin    schedule 11.04.2013


Ответы (2)


немного поздно, но я только что столкнулся с этой проблемой и решил ее .. просто позвоните reset на свой ObjectOutputStream

person Chris    schedule 19.04.2014

Похоже, поле, которое сбрасывается, является полем static. Поля static не сериализуются, так как они принадлежат классу, а не объекту. См. этот вопрос для получения дополнительной информации.

person Kevin    schedule 25.04.2013