語言

ObjectInputStream.ReadUnshared 方法

定義

讀取 ObjectInputStream 中的「未共享」物件。

[Android.Runtime.Register("readUnshared", "()Ljava/lang/Object;", "GetReadUnsharedHandler")]
public virtual Java.Lang.Object? ReadUnshared();
[<Android.Runtime.Register("readUnshared", "()Ljava/lang/Object;", "GetReadUnsharedHandler")>]
abstract member ReadUnshared : unit -> Java.Lang.Object
override this.ReadUnshared : unit -> Java.Lang.Object

傳回

關於反序列化物件的參考

屬性

例外狀況

如果找不到物件圖中某個物件的類別。

如果讀取來源串流時發生錯誤。

備註

讀取 ObjectInputStream 中的「未共享」物件。 此方法與 readObject 相同,但會防止後續呼叫 readObject 與 readUnshared 回傳透過此呼叫獲得的反序列化實例的額外參考。 具體來說: <ul><li>如果 readUnshared 被呼叫來反序列化一個回溯參照(即先前寫入該串流的物件的串流表示),將會拋出 ObjectStreamException。

<li>如果 readUnshared 成功返回,則任何後續嘗試反序列化 readUnshared 去序列化的串流句柄的回溯參考,都會拋出 ObjectStreamException。 </ul> 透過 readUnshared 反序列化物件會使與回傳物件相關的串流句柄失效。 請注意,這本身並不總是保證 readUnshared 回傳的參考是唯一的;反序列化物件可能定義 readResolve 方法,回傳對其他方可見的物件,或 readUnshared 可回傳可從串流中其他地方或外部管道取得的類別物件或枚舉常數。 如果反序列化物件定義了 readResolve 方法,且呼叫該方法回傳陣列,則 readUnshared 會回傳該陣列的淺克隆;這確保回傳的陣列物件是唯一性的,且即使底層資料流已作,也無法從 ObjectInputStream 上呼叫 readObject 或 readUnshared 第二次取得。

覆蓋此方法的 ObjectInputStream 子類別只能在具備「enableSubclassImplementation」SerializablePermissions 的安全情境中建構;未經此許可嘗試實例化此類子類別,將觸發 SecurityException。

在 1.4 版本加入。

Java 文件 java.io.ObjectInputStream.readUnshared()

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

適用於

另請參閱