2016-05-26 7 views
0

私はシリアル化されたフォームからオブジェクトをロードしています:私が期待していたオブジェクトの型にキャストすることは良い考えであればシリアル化されたフォームからオブジェクトをロードした後にオブジェクトをキャストする必要がありますか?

private void loadSerialisedIntersection() throws IOException{ 
try{ 
FileInputStream f_in = new FileInputStream(getPath()); 

     obj_in = new ObjectInputStream (f_in); 

     obj = obj_in.readObject(); 

     if(!(obj instanceof Intersection)) { 
     throw new IOException("Wrong class"); 
     } 
    } 
catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 
} 

私は思っていましたか?私はこれが推奨されていると見ているが、私はそれが問題を引き起こすだろうと想像することができます。これが正しいことであれば、理由を説明してください。

おかげ

+0

なぜそれが問題を引き起こすと思いますか? – rert588

+0

Objectのインスタンスで何をするつもりですか?確かにそれを実際に使用するにはキャストする必要があります。 – Blorgbeard

+0

選択したオブジェクトを挿入するだけで正しいタイプではありませんでしたか?しかし、私は例外がそれを処理するだろうと思う。申し訳ありませんが、私はシリアライゼーションのコンセプトを初めて知っています。オブジェクトを後で使用するにはキャストする必要がありますか? – saleem

答えて

2

それは型付け言語のポイントですので、あなたが期待される型にキャストする必要があります。そのオブジェクトが正しいインスタンス・タイプであるかどうかはすでに確認しています。 ObjectInputStreamを終了し、obj_inとobjをフィールドではなくスコープ変数にします(私はこれを想定しています)。

+0

喝采、キャストを推測するとtryブロックに、catch()の後にclose()する必要がありますか? – saleem

+1

インスタンスの種類のチェックで自分自身を保護しています。それだけ後にキャストしてください。 –

関連する問題