Язык

ObjectOutputStream Класс

Определение

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

[Android.Runtime.Register("java/io/ObjectOutputStream", DoNotGenerateAcw=true)]
public class ObjectOutputStream : Java.IO.OutputStream, IDisposable, 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
Атрибуты
Реализации

Комментарии

Объект 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.

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

Конструкторы

Имя. Описание
ObjectOutputStream()

Предоставьте способ для подклассов, которые полностью повторно используют ObjectOutputStream, чтобы не нужно выделять частные данные, только что используемые этой реализацией ObjectOutputStream.

ObjectOutputStream(IntPtr, JniHandleOwnership)

Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения.

ObjectOutputStream(Stream)

Создает ObjectOutputStream, записываемый в указанный OutputStream.

Свойства

Имя. Описание
Class

Возвращает класс среды выполнения этого Objectобъекта.

(Унаследовано от Object)
Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
JniIdentityHashCode

Возвращает хэш-код удостоверения, назначенный этому Java одноранговой среде выполнения взаимодействия.

(Унаследовано от Object)
JniManagedPeerState

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

(Унаследовано от JavaObject)
JniPeerMembers

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

PeerReference

Возвращает ссылку на объект JNI для этого Java однорангового узла.

(Унаследовано от Object)
ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

Методы

Имя. Описание
AnnotateClass(Class)

Подклассы могут реализовать этот метод, чтобы разрешить хранение данных класса в потоке.

AnnotateProxyClass(Class)

Подклассы могут реализовать этот метод для хранения пользовательских данных в потоке вместе с дескрипторами для динамических прокси-классов.

Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
Close()

Закрывает этот выходной поток и освобождает все системные ресурсы, связанные с этим потоком.

(Унаследовано от OutputStream)
Construct(JniObjectReference, JniObjectReferenceOptions)

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

(Унаследовано от JavaObject)
DefaultWriteObject()

Запись нестатических и временных полей текущего класса в этот поток.

Dispose()

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

(Унаследовано от Object)
Dispose(Boolean)

Освобождает ресурсы, удерживаемые этим Java одноранговым узлом.

(Унаследовано от Object)
DisposeUnlessReferenced()

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

(Унаследовано от JavaObject)
Drain()

Очистка всех буферированных данных в ObjectOutputStream.

EnableReplaceObject(Boolean)

Включите поток для замены объектов в потоке.

Equals(Object)

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

(Унаследовано от JavaObject)
Equals(Object)

Указывает, равен ли другой объект этому объекту.

(Унаследовано от Object)
Flush()

Очищает этот выходной поток и принудительно записывает все буферные выходные байты.

(Унаследовано от OutputStream)
GetHashCode()

Возвращает хэш-значение кода для объекта.

(Унаследовано от Object)
JavaFinalize()
Устаревшие.

Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет.

(Унаследовано от Object)
Notify()

Просыпается один поток, ожидающий монитора этого объекта.

(Унаследовано от Object)
NotifyAll()

Просыпает все потоки, ожидающие монитора этого объекта.

(Унаследовано от Object)
PutFields()

Извлеките объект, используемый для буферизации постоянных полей, записываемых в поток.

ReplaceObject(Object)

Этот метод позволит доверенным подклассам ObjectOutputStream заменить один объект другим во время сериализации.

Reset()

Сброс не учитывает состояние всех объектов, уже записанных в поток.

SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

(Унаследовано от JavaObject)
ToArray<T>()

Создает управляемый массив из этого Java оболочки массива.

(Унаследовано от Object)
ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
UnregisterFromRuntime()

Отменяет регистрацию этого Java однорангового узла из среды выполнения взаимодействия.

(Унаследовано от Object)
UseProtocolVersion(ObjectStreamProtocol)

Укажите версию протокола потока, используемую при записи потока.

Wait()

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, путем <><уведомления/>em или <эм>прерванного</em.>

(Унаследовано от Object)
Wait(Int64, Int32)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)
Wait(Int64)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прерваны< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)
Write(Byte[], Int32, Int32)

Записывает len байты из указанного массива байтов, начиная с смещения off в этот выходной поток.

(Унаследовано от OutputStream)
Write(Byte[])

Записывает b.length байты из указанного массива байтов в этот выходной поток.

(Унаследовано от OutputStream)
Write(Int32)

Записывает байт.

WriteAsync(Byte[], Int32, Int32)

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

(Унаследовано от OutputStream)
WriteAsync(Byte[])

Объект 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.

(Унаследовано от JavaObject)
IJavaPeerable.Finalized()

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

(Унаследовано от JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

(Унаследовано от JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

(Унаследовано от JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

(Унаследовано от JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

(Унаследовано от JavaObject)
IJavaPeerable.UnregisterFromRuntime()

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

Методы расширения

Имя. Описание
FlushAsync(IFlushable)

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

FlushAsync(IObjectOutput)

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

GetJniTypeName(IJavaPeerable)

Возвращает имя JNI типа экземпляра self.

JavaAs<TResult>(IJavaPeerable)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверяемого средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

WriteAsync(IDataOutput, Byte[], Int32, Int32)

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

WriteAsync(IDataOutput, Byte[])

Объект 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.

WriteObjectAsync(IObjectOutput, Object)

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

WriteShortAsync(IDataOutput, Int32)

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

WriteUTFAsync(IDataOutput, String)

Объект ObjectOutputStream записывает примитивные типы данных и графы Java объектов в OutputStream.

Применяется к