1

を使用して(レジストリ情報を含むオブジェクト: 名前、電話番号など).datの配列を含むファイルをプログラムに書き込むことができますが、ファイルには異なるオブジェクトが含まれているため、この同じファイルの読み取りに問題があります。以前使っていたものから。NodeObjectOutputStreamNode[]

そのうちの1つを作成できれば、私の問題は解決されます。

  • 読み取りObjectをオブジェクト型に変換するNode[]、または
  • ファイルを次のように読み取りますreadNode[]();

これの正式名称がわからないので、答えを見つけるのに苦労しています。

4

1 に答える 1

3

ObjectInputStream から返されるオブジェクトは、最初にファイルに書き込んだときと同じ型になります。

ただし、コンパイラはそれがどの型になるかを認識できないため、実行時にキャストする必要があります。

 Object obj = stream.readObject();
 Node[] nodes = (Node[]) obj;

形式が柔軟で、正確に何が期待できるかわからない場合は、instanceof を使用して最初にさまざまな可能性を確認できます。

 if (obj instanceof Node[]){
     // do something
 }
 else if (obj instanceof String) { 
     // do something
 }
 else {
    throw new IOException("unexpected object in data stream "+ obj);
 }
于 2012-06-21T22:42:10.207 に答える