ObjectInputStream クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。
[Android.Runtime.Register("java/io/ObjectInputStream", DoNotGenerateAcw=true)]
public class ObjectInputStream : Java.IO.InputStream, IDisposable, Java.Interop.IJavaPeerable, 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 は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。
ObjectOutputStream と ObjectInputStream は、FileOutputStream と FileInputStream でそれぞれ使用する場合に、オブジェクトのグラフ用の永続ストレージをアプリケーションに提供できます。 ObjectInputStream は、以前にシリアル化されたオブジェクトを回復するために使用されます。 その他の用途としては、ソケット ストリームを使用してホスト間でオブジェクトを渡すことや、リモート通信システムで引数とパラメーターのマーシャリングとマーシャリング解除を行う場合があります。
ObjectInputStream は、ストリームから作成されたグラフ内のすべてのオブジェクトの型が、Java 仮想マシンに存在するクラスと一致することを保証します。 クラスは、標準のメカニズムを使用して必要に応じて読み込まれます。
ストリームから読み取ることができるのは、java.io.Serializable または java.io.Externalizable インターフェイスをサポートするオブジェクトのみです。
メソッド readObject
は、ストリームからオブジェクトを読み取るために使用されます。 目的の型を取得するには、Java の安全なキャストを使用する必要があります。 Java では、文字列と配列はオブジェクトであり、シリアル化時にオブジェクトとして扱われます。 読み取り時には、予期される型にキャストする必要があります。
プリミティブ データ型は、DataInput の適切なメソッドを使用してストリームから読み取ることができます。
オブジェクトの既定の逆シリアル化メカニズムは、各フィールドの内容を値に復元し、書き込み時に持っていた型を復元します。 一時的または静的として宣言されたフィールドは、逆シリアル化プロセスでは無視されます。 他のオブジェクトを参照すると、これらのオブジェクトは必要に応じてストリームから読み取られます。 オブジェクトのグラフは、参照共有メカニズムを使用して正しく復元されます。 新しいオブジェクトは逆シリアル化時に常に割り当てられ、既存のオブジェクトが上書きされないようにします。
オブジェクトの読み取りは、新しいオブジェクトのコンストラクターの実行に似ています。 メモリは オブジェクトに割り当てられ、0 (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 が返され、プリミティブ読み取りでは EOFExceptions がスローされます。 対応する writeObject メソッドがない場合、既定のシリアル化されたデータの末尾は、割り当てられたデータの末尾をマークします。
readExternal メソッド内から発行されたプリミティブ呼び出しとオブジェクト読み取り呼び出しは、同じ方法で動作します。ストリームが対応する writeExternal メソッドによって書き込まれたデータの末尾に既に配置されている場合、オブジェクトの読み取りでは eof が true に設定された OptionalDataExceptions がスローされ、バイトごとの読み取りでは -1 が返され、プリミティブ読み取りでは EOFExceptions がスローされます。 この動作は、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 ドキュメント java.io.ObjectInputStream
。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
ObjectInputStream() |
ObjectInputStream を完全に再実装するサブクラスに、ObjectInputStream のこの実装で使用されるプライベート データを割り当てる必要がない方法を提供します。 |
ObjectInputStream(IntPtr, JniHandleOwnership) |
JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。 |
ObjectInputStream(Stream) |
指定した InputStream から読み取る ObjectInputStream を作成します。 |
プロパティ
Class |
この |
Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
JniIdentityHashCode |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 Object) |
JniPeerMembers |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
PeerReference |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 Object) |
ThresholdClass |
この API は Mono for Android インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
ThresholdType |
この API は Mono for Android インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
メソッド
Available() |
ブロックせずにこの入力ストリームから読み取り (またはスキップ) できるバイト数の推定値を返します。これは、ストリームの末尾が検出された場合は 0 または 0 になります。 (継承元 InputStream) |
Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
Close() |
この入力ストリームを閉じ、ストリームに関連付けられているシステム リソースを解放します。 (継承元 InputStream) |
DefaultReadObject() |
現在のクラスの非静的フィールドと非一時的フィールドをこのストリームから読み取ります。 |
Dispose() |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 Object) |
Dispose(Boolean) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 Object) |
EnableResolveObject(Boolean) |
ストリームから読み取られたオブジェクトを置き換えることを許可するには、ストリームを有効にします。 |
Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
JavaFinalize() |
オブジェクトへの参照がなくなったとガベージ コレクションが判断したときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
Mark(Int32) |
この入力ストリーム内の現在の位置をマークします。 (継承元 InputStream) |
MarkSupported() |
この入力ストリームで メソッドと |
Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドを起動します。 (継承元 Object) |
NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドを起動します。 (継承元 Object) |
Read() |
データのバイトを読み取ります。 |
Read(Byte[]) |
入力ストリームからバイト数を読み取り、バッファー配列 |
Read(Byte[], Int32, Int32) |
入力ストリームからバイト配列に |
ReadAllBytes() |
入力ストリームから残りのすべてのバイトを読み取ります。 (継承元 InputStream) |
ReadAsync() |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 InputStream) |
ReadAsync(Byte[]) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 InputStream) |
ReadAsync(Byte[], Int32, Int32) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 InputStream) |
ReadBoolean() |
ブール値を読み取ります。 |
ReadByte() |
8 ビット バイトを読み取ります。 |
ReadChar() |
16 ビット文字を読み取ります。 |
ReadClassDescriptor() |
シリアル化ストリームからクラス記述子を読み取ります。 |
ReadDouble() |
64 ビット倍精度浮動小数点型 (double) を読み取ります。 |
ReadFields() |
ストリームから永続的なフィールドを読み取り、名前で使用できるようにします。 |
ReadFloat() |
32 ビット浮動小数点を読み取ります。 |
ReadFully(Byte[]) |
バイトを読み取り、すべてのバイトが読み取られるまでブロックします。 |
ReadFully(Byte[], Int32, Int32) |
バイトを読み取り、すべてのバイトが読み取られるまでブロックします。 |
ReadInt() |
32 ビット int を読み取ります。 |
ReadLine() |
古い.
\n、\r、\r\n、または EOF によって終了された行を読み取ります。 |
ReadLong() |
64 ビット長を読み取ります。 |
ReadNBytes(Byte[], Int32, Int32) |
入力ストリームから指定されたバイト配列に要求されたバイト数を読み取ります。 (継承元 InputStream) |
ReadNBytes(Int32) |
入力ストリームから指定されたバイト数まで読み取ります。 (継承元 InputStream) |
ReadObject() |
ObjectInputStream からオブジェクトを読み取ります。 |
ReadObjectOverride() |
このメソッドは、保護された no-arg コンストラクターを使用して ObjectOutputStream を構築した ObjectOutputStream の信頼されたサブクラスによって呼び出されます。 |
ReadShort() |
16 ビットの短いを読み取ります。 |
ReadStreamHeader() |
readStreamHeader メソッドは、サブクラスが独自のストリーム ヘッダーを読み取って検証できるようにするために提供されます。 |
ReadUnshared() |
ObjectInputStream から "unshared" オブジェクトを読み取ります。 |
ReadUnsignedByte() |
符号なし 8 ビット バイトを読み取ります。 |
ReadUnsignedShort() |
符号なし 16 ビット short を読み取ります。 |
ReadUTF() |
変更された UTF-8 形式の文字列を読み取ります。 |
RegisterValidation(IObjectInputValidation, Int32) |
グラフが返される前に検証するオブジェクトを登録します。 |
Reset() |
このストリームを、この入力ストリームでメソッドが最後に |
ResolveClass(ObjectStreamClass) |
指定したストリーム クラスの説明に相当するローカル クラスを読み込みます。 |
ResolveObject(Object) |
このメソッドを使用すると、ObjectInputStream の信頼されたサブクラスは、逆シリアル化時に 1 つのオブジェクトを別のオブジェクトに置き換えることができるようになります。 |
ResolveProxyClass(String[]) |
プロキシ クラス記述子で という名前のインターフェイスを実装するプロキシ クラスを返します。サブクラスは、このメソッドを実装して、動的プロキシ クラスの記述子と共にストリームからカスタム データを読み取り、インターフェイスとプロキシ クラスの代替読み込みメカニズムを使用できるようにします。 |
SetHandle(IntPtr, JniHandleOwnership) |
Handle プロパティを設定します。 (継承元 Object) |
Skip(Int64) |
この入力ストリームからデータのバイト数を |
SkipAsync(Int64) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 InputStream) |
SkipBytes(Int32) |
バイトをスキップします。 |
SkipNBytes(Int64) |
スキップして、この入力ストリームから正確に |
ToArray<T>() |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 Object) |
ToString() |
オブジェクトの文字列形式を返します。 (継承元 Object) |
TransferTo(Stream) |
この入力ストリームからすべてのバイトを読み取り、読み取られた順序で指定された出力ストリームにバイトを書き込みます。 (継承元 InputStream) |
UnregisterFromRuntime() |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 Object) |
Wait() |
現在のスレッドが起動するまで待機します。通常<は、通知</em> または>< em 中断</em によって待機します>。> (継承元 Object) |
Wait(Int64) |
現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。 (継承元 Object) |
Wait(Int64, Int32) |
現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。 (継承元 Object) |
明示的なインターフェイスの実装
IJavaPeerable.Disposed() |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 Object) |
IJavaPeerable.Finalized() |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 Object) |
IJavaPeerable.JniManagedPeerState |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 (継承元 Object) |
拡張メソッド
JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
JavaCast<TResult>(IJavaObject) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
GetJniTypeName(IJavaPeerable) |
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[]) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
ReadFullyAsync(IDataInput, Byte[], Int32, Int32) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
ReadIntAsync(IDataInput) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
ReadLineAsync(IDataInput) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
ReadLongAsync(IDataInput) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
ReadShortAsync(IDataInput) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
ReadUnsignedByteAsync(IDataInput) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
ReadUnsignedShortAsync(IDataInput) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
ReadUTFAsync(IDataInput) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
SkipBytesAsync(IDataInput, Int32) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
ReadAsync(IObjectInput) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
ReadAsync(IObjectInput, Byte[]) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
ReadAsync(IObjectInput, Byte[], Int32, Int32) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
ReadObjectAsync(IObjectInput) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |
SkipAsync(IObjectInput, Int64) |
ObjectInputStream は、ObjectOutputStream を使用して以前に書き込まれたプリミティブ データとオブジェクトを逆シリアル化します。 |