Как сериализовать объект содержащий объект BufferedImage?
Я создал класс MyClass1. Он содержит поле myAbout класса BufferedImage. Для того, чтобы сериализовать объект класса MyClass1 я имплементирую в нем Serializable. Но, т.к. класс MyClass1 содержит поле myAbout класса BufferedImage, то нужно в классе BufferedImage тоже имплементировать Serializable, как это сделать?
Ответы (2 шт):
Для этого в Java существует интерфейс java.io.Externalizable, который расширяет интерфейс java.io.Serializable, и даёт Вам контроль над сериализацией/десереализацией вложенных объектов. Таким образом можете как Вам угодно сериализовать вложенный в Ваш класс BufferedImage.
Есть 2 способа, первый отмечен @zolt, но он не раскрыт в деталях (думаю он раскроет несложные детали экстернализации), есть еще второй способ, технически делается так:
- Пишем классик
MyBufferedImage extends BufferedImage implements Serializable {} - В этом классе пишете 2 метода:
private void writeObject(ObjectOutputStream out)иprivate void readObject(ObjectInputStream in), которые и будут отвечать за реализацию сериализации вашего классаMyBufferedImage - Профит