Spec-Zone.ru › OpenJDK 25

Интерфейс 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.
Начиная с:
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 — если класс восстанавливаемого объекта не найден.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, которая содержит более подробные описания для разработчиков, обзоры основных концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API