Сериализация в Java - PullRequest
       13

Сериализация в Java

5 голосов
/ 19 января 2010

Когда я определяю объект Java для реализации сериализуемого интерфейса, становятся ли члены объекта также сериализуемыми? Или мне нужно пройти как можно дальше по глубине вложения, чтобы переопределить каждый объект на пути как сериализуемый?

Ответы [ 4 ]

6 голосов
/ 19 января 2010

Большинство классов, которые вы регулярно используете в Java, являются сериализуемыми (Коллекции, Строка, потомки Числа и т. Д.), Однако любые классы, на которые вы ссылаетесь, должны быть сериализуемыми или объявленными временными. Конечно, если они временные, на них не будут ссылаться при десериализации класса.

3 голосов
/ 19 января 2010

Что ж, реализация Serializable предоставит вам поддержку сериализации, только если все непереходные члены (спасибо, Данбен) сами являются либо примитивами, либо сериализуемыми классами.

Так что да, если у вас есть много разных вещей в качестве членов, которые не сериализуются, то вы должны сделать их также сериализуемыми.

Если только они не важны для представления состояния вашего объекта. Если вы можете воссоздать его без них, то вы всегда можете сделать так, чтобы члены не переходили в сериализацию.

0 голосов
/ 19 января 2010

Члены не становятся автоматически Сериализуемыми.

Если у вас есть члены, которые есть в вашем классе и которые вы написали сами, вы должны перейти к каждому из них и сделать их сериализуемыми (путем реализации интерфейса).

Большинство типов, которые поставляются с библиотеками JAVA, уже сериализуемы, так что это не должно вас беспокоить.

И конечно, это относится ко всем членам рекурсивно.

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

...