Как сериализовать объект содержащий объект BufferedImage?

Я создал класс MyClass1. Он содержит поле myAbout класса BufferedImage. Для того, чтобы сериализовать объект класса MyClass1 я имплементирую в нем Serializable. Но, т.к. класс MyClass1 содержит поле myAbout класса BufferedImage, то нужно в классе BufferedImage тоже имплементировать Serializable, как это сделать?


Ответы (2 шт):

Автор решения: zolt

Для этого в Java существует интерфейс java.io.Externalizable, который расширяет интерфейс java.io.Serializable, и даёт Вам контроль над сериализацией/десереализацией вложенных объектов. Таким образом можете как Вам угодно сериализовать вложенный в Ваш класс BufferedImage.

→ Ссылка
Автор решения: Barmaley Red Star

Есть 2 способа, первый отмечен @zolt, но он не раскрыт в деталях (думаю он раскроет несложные детали экстернализации), есть еще второй способ, технически делается так:

  1. Пишем классик MyBufferedImage extends BufferedImage implements Serializable {}
  2. В этом классе пишете 2 метода: private void writeObject(ObjectOutputStream out) и private void readObject(ObjectInputStream in), которые и будут отвечать за реализацию сериализации вашего класса MyBufferedImage
  3. Профит
→ Ссылка