語言

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

要替換的物件

傳回

取代指定物件的替代物件

屬性

例外狀況

若在建立替換物件時發生任何 I/O 錯誤。

備註

此方法允許 ObjectOutputStream 的受信任子類別在序列化過程中替換一個物件。 在呼叫 enableReplaceObject 之前,替換物件會被停用。 enableReplaceObject 方法檢查請求替換的串流是否可信。 每個寫入序列化串流的物件首次出現時,會傳遞給 replaceObject。 後續對物件的引用會被原始 replaceObject 呼叫回傳的物件取代。 為確保物件的私有狀態不會無意中暴露,只有受信任的串流才可以使用 replaceObject。

ObjectOutputStream.writeObject 方法採用 Object 型態(而非 Serializable 型態)的參數,以允許將不可序列化的物件替換為可序列化物件。

當子類別替換物件時,必須確保在反序列化過程中必須進行互補替換,或替換物件與所有將儲存該參考的欄位相容。 型別不是欄位或陣列元素子類別的物件,會透過產生例外來中止序列化,且該物件不會被儲存。

此方法僅在每個物件首次遇到時呼叫一次。 所有後續對該物件的引用都會被重新導向到新的物件。 此方法應回傳待替換的物件或原始物件。

Null 可以作為要替換的物件回傳,但在包含原始物件參考的類別中,可能會因為預期物件而非 null,導致 NullReferenceException。

Java 文件 java.io.ObjectOutputStream.replaceObject(java.lang.Object)

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於

另請參閱