言語

ObjectInputStream クラス

定義

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

[Android.Runtime.Register("java/io/ObjectInputStream", DoNotGenerateAcw=true)]
public class ObjectInputStream : Java.IO.InputStream, IDisposable, Java.IO.IObjectInput
[<Android.Runtime.Register("java/io/ObjectInputStream", DoNotGenerateAcw=true)>]
type ObjectInputStream = class
    inherit InputStream
    interface IObjectInput
    interface IDataInput
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
継承
ObjectInputStream
属性
実装

注釈

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ObjectOutputStream と ObjectInputStream は、FileOutputStream と FileInputStream でそれぞれ使用する場合、オブジェクトのグラフ用の永続的ストレージをアプリケーションに提供できます。 ObjectInputStream は、以前にシリアル化されたオブジェクトを回復するために使用されます。 その他の用途としては、ソケット ストリームを使用してホスト間でオブジェクトを渡すことや、リモート通信システムの引数とパラメーターのマーシャリングとマーシャリング解除が含まれます。

ObjectInputStream は、ストリームから作成されたグラフ内のすべてのオブジェクトの型が、Java仮想マシンに存在するクラスと一致することを保証します。 クラスは、標準メカニズムを使用して必要に応じて読み込まれます。

ストリームから読み取ることができるのは、java.io.Serializable または java.io.Externalizable インターフェイスをサポートするオブジェクトのみです。

readObjectメソッドは、ストリームからオブジェクトを読み取るために使用されます。 Javaの安全なキャストは、目的の型を取得するために使用する必要があります。 Javaでは、文字列と配列はオブジェクトであり、シリアル化時にオブジェクトとして扱われます。 読み取り時には、想定される型にキャストする必要があります。

プリミティブ データ型は、DataInput の適切なメソッドを使用してストリームから読み取ることができます。

オブジェクトの既定の逆シリアル化メカニズムは、各フィールドの内容を値に復元し、書き込み時に持っていた型を復元します。 一時的または静的として宣言されたフィールドは、逆シリアル化プロセスでは無視されます。 他のオブジェクトを参照すると、これらのオブジェクトは必要に応じてストリームから読み取られます。 オブジェクトのグラフは、参照共有メカニズムを使用して正しく復元されます。 新しいオブジェクトは、逆シリアル化するときに常に割り当てられます。これにより、既存のオブジェクトが上書きされなくなります。

オブジェクトの読み取りは、新しいオブジェクトのコンストラクターの実行に似ています。 メモリはオブジェクトに割り当てられ、ゼロ (NULL) に初期化されます。 非シリアル化可能なクラスに対して引数なしのコンストラクターが呼び出された後、シリアル化可能なクラスのフィールドは、java.lang.object に最も近いシリアル化可能なクラスから始まり、オブジェクトの最も具体的なクラスで終わるストリームから復元されます。

たとえば、ObjectOutputStream の例で書き込まれたストリームから読み取る場合: <br>

FileInputStream fis = new FileInputStream("t.tmp");
                 ObjectInputStream ois = new ObjectInputStream(fis);

                 int i = ois.readInt();
                 String today = (String) ois.readObject();
                 Date date = (Date) ois.readObject();

                 ois.close();

クラスは、java.io.Serializable インターフェイスまたは java.io.Externalizable インターフェイスを実装することによって、それらのシリアル化方法を制御します。

Serializable インターフェイスを実装すると、オブジェクトのシリアル化でオブジェクトの状態全体を保存および復元でき、ストリームの書き込みと読み取り時間の間にクラスを進化させることができます。 オブジェクト間の参照を自動的に走査し、グラフ全体を保存および復元します。

シリアル化および逆シリアル化プロセス中に特別な処理を必要とするシリアル化可能なクラスは、次のメソッドを実装する必要があります。

private void writeObject(java.io.ObjectOutputStream stream)
                throws IOException;
            private void readObject(java.io.ObjectInputStream stream)
                throws IOException, ClassNotFoundException;
            private void readObjectNoData()
                throws ObjectStreamException;

readObject メソッドは、対応する writeObject メソッドによってストリームに書き込まれたデータを使用して、特定のクラスのオブジェクトの状態の読み取りと復元を行います。 このメソッドは、スーパークラスまたはサブクラスに属する状態に関係する必要はありません。 状態は、個々のフィールドの ObjectInputStream からデータを読み取り、オブジェクトの適切なフィールドに割り当てることによって復元されます。 プリミティブ データ型の読み取りは、DataInput でサポートされています。

対応する writeObject メソッドによって書き込まれたカスタム データの境界を超えるオブジェクト データを読み取ろうとすると、eof フィールド値が true の OptionalDataException がスローされます。 割り当てられたデータの末尾を超える非オブジェクト読み取りは、ストリームの末尾を示すのと同じ方法でデータの末尾を反映します。バイトごとの読み取りでは、バイト読み取りまたは読み取られたバイト数として -1 が返され、プリミティブ読み取りでは EOFException がスローされます。 対応する writeObject メソッドがない場合、既定のシリアル化されたデータの末尾は、割り当てられたデータの末尾をマークします。

readExternal メソッド内から発行されたプリミティブ呼び出しとオブジェクト読み取り呼び出しは同じ方法で動作します。ストリームが対応する writeExternal メソッドによって書き込まれたデータの末尾に既に配置されている場合、オブジェクトの読み取りでは eof が true に設定された OptionalDataExceptions がスローされ、バイトごとの読み取りでは -1 が返され、プリミティブ読み取りでは EOFException がスローされます。 この動作は、writeExternal メソッドによって書き込まれたデータの末尾が区切られない古い ObjectStreamConstants.PROTOCOL_VERSION_1 プロトコルで書き込まれたストリームには保持されないため、検出できないことに注意してください。

readObjectNoData メソッドは、シリアル化ストリームが指定されたクラスを逆シリアル化されるオブジェクトのスーパークラスとして一覧表示しない場合に、その特定のクラスのオブジェクトの状態を初期化します。 これは、受信側が、送信側と異なるバージョンの逆シリアル化されたインスタンスのクラスを使用し、受信側のバージョンが送信者のバージョンによって拡張されていないクラスを拡張する場合に発生する可能性があります。 これは、シリアル化ストリームが改ざんされた場合にも発生する可能性があります。そのため、readObjectNoData は、"敵対的" または不完全なソース ストリームにもかかわらず、逆シリアル化されたオブジェクトを適切に初期化するのに役立ちます。

シリアル化では、java.io.Serializable インターフェイスを実装していないオブジェクトのフィールドに値を読み取ったり割り当てたりすることはありません。 シリアル化できないオブジェクトのサブクラスは、シリアル化できます。 この場合、非シリアル化可能なクラスには、フィールドの初期化を許可する引数なしのコンストラクターが必要です。 この場合、サブクラスはシリアル化不可能なクラスの状態を保存して復元する必要があります。 多くの場合、そのクラスのフィールドにアクセスできる (パブリック、パッケージ、または保護されている) か、状態の復元に使用できる get メソッドと set メソッドがある場合です。

オブジェクトの逆シリアル化中に発生する例外は ObjectInputStream によってキャッチされ、読み取りプロセスが中止されます。

Externalizable インターフェイスを実装すると、オブジェクトは、オブジェクトのシリアル化されたフォームの内容と形式を完全に制御できます。 Externalizable インターフェイスの writeExternal および readExternal のメソッドは、オブジェクトの状態を保存および復元するために呼び出されます。 クラスによって実装された場合、ObjectOutput と ObjectInput のすべてのメソッドを使用して、独自の状態を書き込んで読み取ることができます。 発生したバージョン管理を処理するのは、オブジェクトの役割です。

列挙型定数は、通常のシリアル化可能または外部化可能なオブジェクトとは異なる方法で逆シリアル化されます。 列挙型定数のシリアル化された形式は、その名前のみで構成されます。定数のフィールド値は送信されません。 列挙型定数を逆シリアル化するために、ObjectInputStream はストリームから定数名を読み取ります。逆シリアル化された定数は、列挙型定数の基本型と受け取った定数名を引数として Enum.valueOf(Class, String) 静的メソッドを呼び出すことによって取得されます。 他のシリアル化可能なオブジェクトや外部化可能なオブジェクトと同様に、列挙型定数は、シリアル化ストリームに続いて出現するバック参照のターゲットとして機能できます。 列挙型定数を逆シリアル化するプロセスはカスタマイズできません。列挙型で定義されているクラス固有の readObject、readObjectNoData、および readResolve メソッドは、逆シリアル化中は無視されます。 同様に、serialPersistentFields または serialVersionUID フィールド宣言も無視されます。すべての列挙型の固定 serialVersionUID は 0L です。

JDK1.1 で追加されました。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

名前 説明
ObjectInputStream()

ObjectInputStream のこの実装で使用されるプライベート データを割り当てる必要がないように ObjectInputStream を完全に再実装するサブクラスの方法を提供します。

ObjectInputStream(IntPtr, JniHandleOwnership)

JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。

ObjectInputStream(Stream)

指定した InputStream から読み取る ObjectInputStream を作成します。

プロパティ

名前 説明
Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
JniIdentityHashCode

相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。

(継承元 Object)
JniManagedPeerState

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

(継承元 JavaObject)
JniPeerMembers

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

PeerReference

このJava ピアの JNI オブジェクト参照を取得します。

(継承元 Object)
ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

メソッド

名前 説明
Available()

ブロックせずにこの入力ストリームから読み取り (またはスキップ) できるバイト数の推定値を返します。ストリームの末尾が検出された場合は 0 または 0 になります。

(継承元 InputStream)
Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Close()

この入力ストリームを閉じ、ストリームに関連付けられているシステム リソースを解放します。

(継承元 InputStream)
Construct(JniObjectReference, JniObjectReferenceOptions)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

(継承元 JavaObject)
DefaultReadObject()

現在のクラスの非静的フィールドと非一時的フィールドをこのストリームから読み取ります。

Dispose()

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
Dispose(Boolean)

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
DisposeUnlessReferenced()

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

(継承元 JavaObject)
EnableResolveObject(Boolean)

ストリームから読み取ったオブジェクトを置き換えるようにストリームを有効にします。

Equals(Object)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

(継承元 JavaObject)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
JavaFinalize()
古い.

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
Mark(Int32)

この入力ストリーム内の現在位置をマークします。

(継承元 InputStream)
MarkSupported()

この入力ストリームが mark メソッドと reset メソッドをサポートしているかどうかをテストします。

(継承元 InputStream)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
Read()

データのバイトを読み取ります。

Read(Byte[], Int32, Int32)

入力ストリームから最大 len バイトのデータをバイト配列に読み取ります。

(継承元 InputStream)
Read(Byte[])

入力ストリームからバイト数を読み取り、バッファー配列 bに格納します。

(継承元 InputStream)
ReadAllBytes()

入力ストリームから残りのすべてのバイトを読み取ります。

(継承元 InputStream)
ReadAsync()

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

(継承元 InputStream)
ReadAsync(Byte[], Int32, Int32)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

(継承元 InputStream)
ReadAsync(Byte[])

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

(継承元 InputStream)
ReadBoolean()

ブール値を読み取ります。

ReadByte()

8 ビット バイトを読み取ります。

ReadChar()

16 ビット文字を読み取ります。

ReadClassDescriptor()

シリアル化ストリームからクラス記述子を読み取ります。

ReadDouble()

64 ビット倍精度浮動小数点型 (double) を読み取ります。

ReadFields()

ストリームから永続的なフィールドを読み取り、名前で使用できるようにします。

ReadFloat()

32 ビット浮動小数点を読み取ります。

ReadFully(Byte[], Int32, Int32)

バイトを読み取り、すべてのバイトが読み取られるまでブロックします。

ReadFully(Byte[])

バイトを読み取り、すべてのバイトが読み取られるまでブロックします。

ReadInt()

32 ビット int を読み取ります。

ReadLine()
古い.

\n、\r、\r\n、または EOF によって終了された行を読み取ります。

ReadLong()

64 ビット長を読み取ります。

ReadNBytes(Byte[], Int32, Int32)

指定されたバイト配列に入力ストリームから要求されたバイト数を読み取ります。

(継承元 InputStream)
ReadNBytes(Int32)

入力ストリームから指定されたバイト数まで読み取ります。

(継承元 InputStream)
ReadObject()

ObjectInputStream からオブジェクトを読み取ります。

ReadObjectOverride()

このメソッドは、保護された引数なしコンストラクターを使用して ObjectOutputStream を構築した ObjectOutputStream の信頼されたサブクラスによって呼び出されます。

ReadShort()

16 ビットの短いビットを読み取ります。

ReadStreamHeader()

readStreamHeader メソッドは、サブクラスが独自のストリーム ヘッダーを読み取って検証できるようにするために提供されます。

ReadUnshared()

ObjectInputStream から "非共有" オブジェクトを読み取ります。

ReadUnsignedByte()

符号なし 8 ビット バイトを読み取ります。

ReadUnsignedShort()

符号なし 16 ビットの短い値を読み取ります。

ReadUTF()

変更された UTF-8 形式の文字列を読み取ります。

RegisterValidation(IObjectInputValidation, Int32)

グラフが返される前に検証するオブジェクトを登録します。

Reset()

このストリームを、 mark メソッドがこの入力ストリームで最後に呼び出された時点の位置に再配置します。

(継承元 InputStream)
ResolveClass(ObjectStreamClass)

指定したストリーム クラスの説明に相当するローカル クラスを読み込みます。

ResolveObject(Object)

このメソッドを使用すると、ObjectInputStream の信頼されたサブクラスは、逆シリアル化中に 1 つのオブジェクトを別のオブジェクトに置き換えることができるようになります。

ResolveProxyClass(String[])

プロキシ クラス記述子で指定されたインターフェイスを実装するプロキシ クラスを返します。サブクラスは、ストリームからカスタム データを動的プロキシ クラスの記述子と共に読み取るために、このメソッドを実装して、インターフェイスとプロキシ クラスの代替読み込みメカニズムを使用できます。

SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

(継承元 JavaObject)
Skip(Int64)

この入力ストリームから n バイトのデータをスキップして破棄します。

(継承元 InputStream)
SkipAsync(Int64)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

(継承元 InputStream)
SkipBytes(Int32)

バイトをスキップします。

SkipNBytes(Int64)

スキップして、この入力ストリームから正確に n バイトのデータを破棄します。

(継承元 InputStream)
ToArray<T>()

このJava配列ラッパーからマネージド配列を作成します。

(継承元 Object)
ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
TransferTo(Stream)

この入力ストリームからすべてのバイトを読み取り、読み取られた順序で指定された出力ストリームにバイトを書き込みます。

(継承元 InputStream)
UnregisterFromRuntime()

相互運用ランタイムからこのJava ピアの登録を解除します。

(継承元 Object)
Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)
Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

名前 説明
IJavaPeerable.Disposed()

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

(継承元 JavaObject)
IJavaPeerable.Finalized()

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

(継承元 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

(継承元 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

(継承元 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

(継承元 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

(継承元 JavaObject)
IJavaPeerable.UnregisterFromRuntime()

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadAsync(IObjectInput, Byte[], Int32, Int32)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadAsync(IObjectInput, Byte[])

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadAsync(IObjectInput)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadBooleanAsync(IDataInput)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadByteAsync(IDataInput)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadCharAsync(IDataInput)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadDoubleAsync(IDataInput)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadFloatAsync(IDataInput)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadFullyAsync(IDataInput, Byte[], Int32, Int32)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadFullyAsync(IDataInput, Byte[])

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadIntAsync(IDataInput)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadLineAsync(IDataInput)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadLongAsync(IDataInput)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadObjectAsync(IObjectInput)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadShortAsync(IDataInput)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadUnsignedByteAsync(IDataInput)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadUnsignedShortAsync(IDataInput)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

ReadUTFAsync(IDataInput)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

SkipAsync(IObjectInput, Int64)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

SkipBytesAsync(IDataInput, Int32)

ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象