2016-08-10 3 views
-1

私はこれを行うのが難しいかもしれないので、もっと良い解決策があるかどうか教えてください。Javaで複数の異なるオブジェクトをシリアライズ

私はあなたのアクションをGUIで選択するJavaで簡単なテキストゲームを作っています。私は、プレイヤーであるものとNPCであるものをシリアル化しようとしているクラスをいくつか持っています。複数のオブジェクト(プレーヤーとNPC)を同じファイルに複数直列化する簡単な方法はありますか?私は1つのオブジェクトをシリアル化し、ゲームに戻すことができます。

私はこれについて間違った方法をしていますか?ゲームの状態を保存する簡単な方法はありますか?

複数のオブジェクトを作成するクラスがあり、そのクラスをシリアル化すると、作成したオブジェクトもシリアル化されますか?

おかげ

答えて

1

オブジェクトを順番に書き込む別の方法は、コレクションをシリアル化できるため、オブジェクトをコレクション(HashMapなど)に保存することです。これにより、特にシリアライズ/デシリアライズするオブジェクトがたくさんある場合は、検索時に管理する方が簡単になります。それが働いているよう

first 
second 
+0

おかげで、これは見た目:

String first = "first"; String second = "second"; HashMap<String, Object> saved = new HashMap<String, Object>(); saved.put("A", first); saved.put("B", second); try { FileOutputStream fos = new FileOutputStream("test.obj"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(saved); oos.flush(); oos.close(); fos.close(); FileInputStream fis = new FileInputStream("test.obj"); ObjectInputStream ois = new ObjectInputStream(fis); HashMap<String,Object> retreived = (HashMap<String,Object>)ois.readObject(); fis.close(); System.out.println(retreived.get("A")); System.out.println(retreived.get("B")); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } 

これを実行につながるはずです。次のコードは、これは示しています。コンソールに「A」と「B」を印刷するのではなく、どのようにオブジェクトに割り当てるか、私は何かをすることができますか? – jprogrammer

+0

私はここからそれを理解しました:http://stackoverflow.com/questions/7857935/how-to-get-an-object-from-a-hashmap-in-java もう一度お返事いただきありがとうございます正しいトラック:) – jprogrammer

0

はちょうどあなたが必要な数の異なるオブジェクトでwriteObject()として何度も呼び出して、逆readObject()同上を呼び出します。

あなたはまだそれを試していないと信じるのは難しいです。

関連する問題