Интерфейс Externalizable
- Все суперинтерфейсы:
Serializable
- Все известные подинтерфейсы:
-
RemoteRef,ServerRef
- Все известные реализующие классы:
-
DataFlavor,MLet,PrivateMLet
public interface Externalizable extends Serializable
В поток сериализации записывается только идентификатор класса экземпляра Externalizable, и класс несет ответственность за сохранение и восстановление содержимого своих экземпляров. Методы writeExternal и readExternal интерфейса Externalizable реализуются классом для обеспечения полного контроля над форматом и содержимым потока для объекта и его супертипов. Эти методы должны явно согласовываться с супертипом для сохранения его состояния. Эти методы заменяют настраиваемые реализации методов writeObject и readObject.
Сериализация объектов использует интерфейсы Serializable и Externalizable. Их могут также использовать механизмы сохранения объектов. Каждый объект, подлежащий сохранению, проверяется на наличие интерфейса Externalizable. Если объект поддерживает Externalizable, вызывается метод writeExternal. Если объект не поддерживает Externalizable, но реализует Serializable, объект сохраняется с помощью ObjectOutputStream.
При восстановлении объекта Externalizable создается экземпляр с помощью публичного конструктора без аргументов, затем вызывается метод readExternal. Объекты Serializable восстанавливаются путём чтения из ObjectInputStream.
Экземпляр Externalizable может указать замещающий объект с помощью методов writeReplace и readResolve, документированных в интерфейсе Serializable.
- С:
- 1.1
- См. также:
-
ObjectOutputStream,ObjectInputStream,ObjectOutput,ObjectInput,Serializable
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | readExternal(ObjectInput in) | Объект реализует метод readExternal для восстановления своего содержимого, вызывая методы DataInput для примитивных типов и readObject для объектов, строк и массивов. |
void | writeExternal(ObjectOutput out) | Объект реализует метод writeExternal для сохранения своего содержимого, вызывая методы DataOutput для его примитивных значений или вызывая метод writeObject ObjectOutput для объектов, строк и массивов. |
Методы
writeExternal
void writeExternal(ObjectOutput out)
throws IOExceptionОбъект реализует метод writeExternal для сохранения своего содержимого, вызывая методы DataOutput для его примитивных значений или вызывая метод writeObject ObjectOutput для объектов, строк и массивов.
- Параметры:
-
out- поток для записи объекта - Исключения:
-
IOException- Включает любые исключения ввода/вывода, которые могут возникнуть
readExternal
void readExternal(ObjectInput in)
throws IOException,
ClassNotFoundExceptionОбъект реализует метод readExternal для восстановления своего содержимого, вызывая методы DataInput для примитивных типов и readObject для объектов, строк и массивов. Метод readExternal должен читать значения в том же порядке и с теми же типами, что и были записаны методом writeExternal.
- Параметры:
-
in- поток для чтения данных для восстановления объекта - Исключения:
-
IOException- если возникают ошибки ввода/вывода -
ClassNotFoundException- если класс восстанавливаемого объекта не найден.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/Externalizable.html