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


ObjectOutputStream.ReplaceObject(Object) Метод

Определение

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

[Android.Runtime.Register("replaceObject", "(Ljava/lang/Object;)Ljava/lang/Object;", "GetReplaceObject_Ljava_lang_Object_Handler")]
protected virtual Java.Lang.Object? ReplaceObject (Java.Lang.Object? obj);
[<Android.Runtime.Register("replaceObject", "(Ljava/lang/Object;)Ljava/lang/Object;", "GetReplaceObject_Ljava_lang_Object_Handler")>]
abstract member ReplaceObject : Java.Lang.Object -> Java.Lang.Object
override this.ReplaceObject : Java.Lang.Object -> Java.Lang.Object

Параметры

obj
Object

объект для замены

Возвращаемое значение

альтернативный объект, заменивший указанный

Атрибуты

Исключения

Значение , если при создании объекта замены возникает ошибка ввода-вывода.

Комментарии

Этот метод позволит доверенным подклассам ObjectOutputStream заменить один объект другим во время сериализации. Замена объектов отключена до вызова enableReplaceObject. Метод enableReplaceObject проверяет, что поток, запрашивающий замену, может быть доверенным. Первое вхождение каждого объекта, записанного в поток сериализации, передается для заменыObject. Последующие ссылки на объект заменяются объектом, возвращаемым исходным вызовом для заменыObject. Чтобы обеспечить непреднамеренный доступ к частному состоянию объектов, только доверенные потоки могут использовать replaceObject.

Метод ObjectOutputStream.writeObject принимает параметр типа Object (в отличие от типа Serializable), чтобы разрешить случаи, когда несериализируемые объекты заменяются сериализуемыми.

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

Этот метод вызывается только один раз при первом обнаружении каждого объекта. Все последующие ссылки на объект будут перенаправлены в новый объект. Этот метод должен возвращать объект для замены или исходного объекта.

Значение NULL может быть возвращено в качестве замены объекта, но может привести к nullReferenceException в классах, содержащих ссылки на исходный объект, так как они могут ожидать объект вместо NULL.

Документация по Java для java.io.ObjectOutputStream.replaceObject(java.lang.Object).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

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

См. также раздел