Поделиться через


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
Атрибуты
Реализации

Комментарии

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

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

(Унаследовано от Object)
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[])

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

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

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

(Унаследовано от OutputStream)
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.

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