Интерфейс Externalizable
- Все суперинтерфейсы:
Serializable
- Все известные подинтерфейсы:
RemoteRef, ServerRef
- Все известные классы-реализации:
DataFlavor
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, 2025, 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/25/docs/api/java.base/java/io/Externalizable.html