ObjectOutputStream Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream.
[Android.Runtime.Register("java/io/ObjectOutputStream", DoNotGenerateAcw=true)]
public class ObjectOutputStream : Java.IO.OutputStream, IDisposable, Java.Interop.IJavaPeerable, Java.IO.IObjectOutput
[<Android.Runtime.Register("java/io/ObjectOutputStream", DoNotGenerateAcw=true)>]
type ObjectOutputStream = class
inherit OutputStream
interface IObjectOutput
interface IDataOutput
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- Наследование
- Атрибуты
- Реализации
Комментарии
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. Объекты можно считывать (воссоздать) с помощью ObjectInputStream. Постоянное хранилище объектов можно выполнить с помощью файла для потока. Если поток является потоком сетевого сокета, объекты можно восстановить на другом узле или в другом процессе.
В потоки можно записать только объекты, поддерживающие интерфейс java.io.Serializable. Класс каждого сериализуемого объекта закодирован, включая имя класса и сигнатуру класса, значения полей и массивов объекта, а также закрытие любых других объектов, на которые ссылаются исходные объекты.
Метод writeObject используется для записи объекта в поток. Любой объект, включая Строки и массивы, записывается с помощью writeObject. В поток можно записать несколько объектов или примитивов. Объекты должны быть считываются обратно из соответствующего объекта ObjectInputstream с теми же типами и в том же порядке, что и они были написаны.
Примитивные типы данных также можно записать в поток с помощью соответствующих методов из DataOutput. Строки также можно записывать с помощью метода writeUTF.
Механизм сериализации по умолчанию для объекта записывает класс объекта, сигнатуру класса и значения всех не временных и нестатических полей. Ссылки на другие объекты (за исключением временных или статических полей) вызывают также запись этих объектов. Несколько ссылок на один объект кодируются с помощью механизма совместного использования ссылок, чтобы графы объектов могли быть восстановлены в той же форме, что и при написании исходного объекта.
Например, чтобы написать объект, который можно считывать в примере в ObjectInputStream: <br>
FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeInt(12345);
oos.writeObject("Today");
oos.writeObject(new Date());
oos.close();
Классы, требующие специальной обработки во время процесса сериализации и десериализации, должны реализовывать специальные методы с этими точными сигнатурами: <br>
private void readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException;
private void writeObject(java.io.ObjectOutputStream stream)
throws IOException
private void readObjectNoData()
throws ObjectStreamException;
Метод writeObject отвечает за запись состояния объекта для определенного класса, чтобы соответствующий метод readObject смог восстановить его. Метод не должен беспокоиться о состоянии, относящемся к суперклассам или подклассам объекта. Состояние сохраняется путем записи отдельных полей в ObjectOutputStream с помощью метода writeObject или с помощью методов для примитивных типов данных, поддерживаемых DataOutput.
Сериализация не записывает поля любого объекта, который не реализует интерфейс java.io.Serializable. Подклассы объектов, которые не являются сериализуемыми, могут быть сериализуемыми. В этом случае несериализированный класс должен иметь конструктор no-arg, чтобы разрешить инициализацию полей. В этом случае подкласс несет ответственность за сохранение и восстановление состояния несериализируемого класса. Зачастую поля этого класса доступны (общедоступные, пакеты или защищенные) или доступны методы получения и задания, которые можно использовать для восстановления состояния.
Сериализация объекта может быть запрещена путем реализации методов writeObject и readObject, которые вызывают notSerializableException. Исключение будет поймано объектом ObjectOutputStream и прервать процесс сериализации.
Реализация интерфейса Externalizable позволяет объекту полностью контролировать содержимое и формат сериализованной формы объекта. Методы интерфейса Externalizable, writeExternal и readExternal, вызываются для сохранения и восстановления состояния объектов. При реализации класса они могут записывать и считывать собственное состояние с помощью всех методов ObjectOutput и ObjectInput. Это ответственность за объекты для обработки любых версий, которые возникают.
Константы перечисления сериализуются по-разному, чем обычные сериализуемые или внешние объекты. Сериализованная форма константы перечисления состоит исключительно из его имени; значения полей константы не передаются. Чтобы сериализовать константу перечисления, ObjectOutputStream записывает строку, возвращаемую методом имени константы. Как и другие сериализуемые или внешние объекты, константы перечисления могут функционировать в качестве целевых объектов обратной ссылки, которые появляются впоследствии в потоке сериализации. Процесс сериализации констант перечисления невозможно настроить; все методы writeObject и writeReplace, определенные типами перечисления, игнорируются во время сериализации. Аналогичным образом все объявления полей serialPersistentFields или serialVersionUID также игнорируются. Все типы перечисления имеют фиксированный serialVersionUID 0L.
Примитивные данные, за исключением сериализуемых полей и внешних данных, записываются в ObjectOutputStream в записях блочных данных. Запись блочных данных состоит из заголовка и данных. Заголовок данных блока состоит из маркера и количества байтов, которые следует за заголовком. Последовательные примитивные записи данных объединяются в одну запись блочных данных. Фактор блокировки, используемый для записи блочных данных, будет составлять 1024 байта. Каждая запись блок-данных заполняется до 1024 байтов или записывается всякий раз, когда происходит завершение режима блочных данных. Вызовы методов ObjectOutputStream writeObject, defaultWriteObject и writeFields изначально завершают все существующие записи блочных данных.
Добавлено в JDK1.1.
Документация по Java для java.io.ObjectOutputStream.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Конструкторы
| ObjectOutputStream() |
Предоставьте способ для подклассов, которые полностью повторно используют ObjectOutputStream, чтобы не нужно выделять частные данные, только что используемые этой реализацией ObjectOutputStream. |
| ObjectOutputStream(IntPtr, JniHandleOwnership) |
Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения. |
| ObjectOutputStream(Stream) |
Создает ObjectOutputStream, записываемый в указанный OutputStream. |
Свойства
| Class |
Возвращает класс среды выполнения этого |
| Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
| JniIdentityHashCode |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от Object) |
| JniPeerMembers |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| PeerReference |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от Object) |
| ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
| ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
Методы
| AnnotateClass(Class) |
Подклассы могут реализовать этот метод, чтобы разрешить хранение данных класса в потоке. |
| AnnotateProxyClass(Class) |
Подклассы могут реализовать этот метод для хранения пользовательских данных в потоке вместе с дескрипторами для динамических прокси-классов. |
| Clone() |
Создает и возвращает копию этого объекта. (Унаследовано от Object) |
| Close() |
Закрывает этот выходной поток и освобождает все системные ресурсы, связанные с этим потоком. (Унаследовано от OutputStream) |
| DefaultWriteObject() |
Запись нестатических и временных полей текущего класса в этот поток. |
| Dispose() |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от Object) |
| Dispose(Boolean) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от Object) |
| Drain() |
Очистка всех буферированных данных в ObjectOutputStream. |
| EnableReplaceObject(Boolean) |
Включите поток для замены объектов в потоке. |
| Equals(Object) |
Указывает, равен ли другой объект этому объекту. (Унаследовано от Object) |
| Flush() |
Очищает этот выходной поток и принудительно записывает все буферные выходные байты. (Унаследовано от OutputStream) |
| GetHashCode() |
Возвращает значение хэш-кода для объекта. (Унаследовано от Object) |
| JavaFinalize() |
Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет. (Унаследовано от Object) |
| Notify() |
Пробуждение одного потока, ожидающего монитора этого объекта. (Унаследовано от Object) |
| NotifyAll() |
Просыпает все потоки, ожидающие монитора этого объекта. (Унаследовано от Object) |
| PutFields() |
Извлеките объект, используемый для буферизации постоянных полей, записываемых в поток. |
| ReplaceObject(Object) |
Этот метод позволит доверенным подклассам ObjectOutputStream заменить один объект другим во время сериализации. |
| Reset() |
Сброс не учитывает состояние всех объектов, уже записанных в поток. |
| SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
| ToArray<T>() |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от Object) |
| ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
| UnregisterFromRuntime() |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от Object) |
| UseProtocolVersion(ObjectStreamProtocol) |
Укажите версию протокола потока, используемую при записи потока. |
| Wait() |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>помощи уведомления</em> или <эм>прерванного</em>. (Унаследовано от Object) |
| Wait(Int64) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
| Wait(Int64, Int32) |
Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени. (Унаследовано от Object) |
| Write(Byte[]) |
Записывает |
| Write(Byte[], Int32, Int32) |
Записывает |
| Write(Int32) |
Записывает байт. |
| WriteAsync(Byte[]) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от OutputStream) |
| WriteAsync(Byte[], Int32, Int32) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от OutputStream) |
| WriteAsync(Int32) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от OutputStream) |
| WriteBoolean(Boolean) |
Записывает логическое значение. |
| WriteByte(Int32) |
Записывает 8-разрядный байт. |
| WriteBytes(String) |
Записывает строку в виде последовательности байтов. |
| WriteChar(Int32) |
Записывает 16-разрядную символьную символу. |
| WriteChars(String) |
Записывает строку в виде последовательности символов. |
| WriteClassDescriptor(ObjectStreamClass) |
Напишите указанный дескриптор класса в ObjectOutputStream. |
| WriteDouble(Double) |
Записывает 64-разрядную двойную запись. |
| WriteFields() |
Записать буферные поля в поток. |
| WriteFloat(Single) |
Записывает 32-разрядную плавающую строку. |
| WriteInt(Int32) |
Записывает 32-разрядную int. |
| WriteLong(Int64) |
Записывает 64-разрядную длину. |
| WriteObject(Object) |
Напишите указанный объект в ObjectOutputStream. |
| WriteObjectOverride(Object) |
Метод, используемый подклассами для переопределения метода writeObject по умолчанию. |
| WriteShort(Int32) |
Записывает 16-разрядную короткую запись. |
| WriteStreamHeader() |
Метод writeStreamHeader предоставляется таким образом, чтобы подклассы могли добавлять или добавлять собственный заголовок в поток. |
| WriteUnshared(Object) |
Записывает объект "unshared" в ObjectOutputStream. |
| WriteUTF(String) |
Примитивная запись данных этой строки в измененном формате UTF-8. |
Явные реализации интерфейса
| IJavaPeerable.Disposed() |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от Object) |
| IJavaPeerable.DisposeUnlessReferenced() |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от Object) |
| IJavaPeerable.Finalized() |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от Object) |
| IJavaPeerable.JniManagedPeerState |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от Object) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от Object) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от Object) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. (Унаследовано от Object) |
Методы расширения
| JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
| JavaCast<TResult>(IJavaObject) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| GetJniTypeName(IJavaPeerable) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| WriteAsync(IDataOutput, Byte[]) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| WriteAsync(IDataOutput, Byte[], Int32, Int32) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| WriteAsync(IDataOutput, Int32) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| WriteBooleanAsync(IDataOutput, Boolean) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| WriteByteAsync(IDataOutput, Int32) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| WriteBytesAsync(IDataOutput, String) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| WriteCharAsync(IDataOutput, Int32) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| WriteCharsAsync(IDataOutput, String) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| WriteDoubleAsync(IDataOutput, Double) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| WriteFloatAsync(IDataOutput, Single) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| WriteIntAsync(IDataOutput, Int32) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| WriteLongAsync(IDataOutput, Int64) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| WriteShortAsync(IDataOutput, Int32) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| WriteUTFAsync(IDataOutput, String) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| FlushAsync(IFlushable) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| FlushAsync(IObjectOutput) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |
| WriteObjectAsync(IObjectOutput, Object) |
Объект ObjectOutputStream записывает примитивные типы данных и графы объектов Java в OutputStream. |