Вы не можете сериализовать класс, который не реализует Serializable
, но вы можете заключить его в класс, который это делает.Чтобы сделать это, вы должны реализовать readObject
и writeObject
в своем классе-обертке, чтобы вы могли сериализовать его объекты нестандартным способом.
- Во-первых, сделайте ваше несериализуемое поле
transient
. - В
writeObject
сначала вызовите defaultWriteObject
в потоке, чтобы сохранить все непереходные поля, а затем вызовите другие методы для сериализации отдельных свойств вашего несериализуемого объекта. - В
readObject
сначала вызовите defaultReadObject
в потоке, чтобы прочитать все непереходные поля, затем вызовите другие методы (соответствующие тем, которые вы добавили в writeObject
) для десериализации вашего несериализуемого объекта.
Надеюсь, это имеет смысл.: -)