ObjectOutputStream.ReplaceObject(Object) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
此方法允許 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 所創建與分享的作品,並依授權條款所描述的使用進行修改。