Интерфейс 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.
Сериализация объектов использует интерфейсы Serializable и Externalizable. Их также могут использовать механизмы сохранения объектов. Каждый объект, подлежащий сохранению, проверяется на наличие интерфейса Externalizable. Если объект поддерживает Externalizable, вызывается метод writeExternal. Если объект не поддерживает Externalizable, но реализует Serializable, объект сохраняется с помощью ObjectOutputStream.
При восстановлении объекта Externalizable создается экземпляр с использованием публичного конструктора без аргументов, затем вызывается метод readExternal. Объекты Serializable восстанавливаются путем считывания их из ObjectInputStream.
Экземпляр Externalizable может назначить замещающий объект с помощью методов writeReplace и readResolve, документированных в интерфейсе Serializable.
- С:
- 1.1
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
readExternal |
Объект реализует метод readExternal для восстановления своего содержимого, вызывая методы DataInput для примитивных типов и readObject для объектов, строк и массивов. |
void |
writeExternal |
Объект реализует метод 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, 2023, 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/21/docs/api/java.base/java/io/Externalizable.html