ObjectInputStreamから読み取っていますが、オブジェクトの数が事前にわかりません。したがって、EOF例外catchブロックを使用して、ファイルのENDに到達したことを検出し、ファイルを閉じます。
それは良い/安全なプログラミングの練習ですか?
それが良いアプローチではない場合、それはいくつかのより良い方法で行うことができますか?
ObjectInputStreamから読み取っていますが、オブジェクトの数が事前にわかりません。したがって、EOF例外catchブロックを使用して、ファイルのENDに到達したことを検出し、ファイルを閉じます。
それは良い/安全なプログラミングの練習ですか?
それが良いアプローチではない場合、それはいくつかのより良い方法で行うことができますか?
はい。オブジェクトをシリアル方式で読み取っていて(シリアル方式で書き込まれた、つまりo1、o2、o3)、ストリームに他の情報がまったくない場合は可能です。
これを回避する2つの方法:
ネットワークを介してオブジェクトストリームを送信する場合は、少し厄介になりますが、RMIを使用する方が、手動でコーディングするよりも適切です。
選択肢はあまりありません。ObjectInputStream.readObject()は、オブジェクトが不足したときにEOFExceptionをスローします。EOSを自分でストリームに冗長にエンコードしない限り、EOFExceptionをキャッチする必要があります。
この方法を使用するavailable()ことはあなたの代わりになりますか?EoFの前に利用可能なゼロを返さないストリームに依存できますか?