Почему объекты конструкторов не могут быть сериализованы в Java? - PullRequest
0 голосов
/ 08 августа 2011

У меня есть класс, который реализует Serializable, он является частью большей сетки объектов, он содержит поле Constructor, но когда сериалы превращаются в сериалы, он выбрасывает NotSerializableException.

Полагаю, мне придется самому писать логику и пересоздавать конструктор каждый раз, когда я десериализую содержащий объект, но зачем, черт возьми, дизайнеры Java создавать такие хлопоты? Я понимаю, что ClassLoader необходим для определения идентичности класса, и что сам ClassLoader не будет сериализован и десериализован, но не должен ли конструктор помнить строковые аргументы, использованные для его создания?

1 Ответ

3 голосов
/ 08 августа 2011

Да, как вы поняли, Constructor не сериализуемо.

Вам нужно сделать переходное поле Constructor и восстановить его вручную, когда это необходимо.

Да, Java-дизайнеры могли бы сделать сериализованный класс Constructor вплоть до имени класса и списка аргументов, но это открыло бы огромную банку червей, в основном кипящую вплоть до того факта, что в любой данной JVM может быть произвольное количество классов с таким именем, и нет никакого разумного способа узнать, какой из них использовать при десериализации такого объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...