私は原始的なRPGに取り組んでおり、このクラスには(おそらく)必要なすべてのデータが含まれています:
public class CPU implements Serializable{
private Map<String, Location> locations;
private Map<String, Location> places;
private Map<String, NPC> npcs;
private Game game;
private Player player;
private NPC currentNPC;
public CPU(){
}
(メソッドは含めませんでしたが、今は関係ないと思います...)
クラス "Game" にも Player と CPU が変数として含まれていますが、そのコンストラクターは実際にそれらを作成するものではありません (これらは main() メソッドで作成され、クラスに追加されます)。このメソッドは、後ですべてのデータを読み取ることができるように、CPU クラスをファイルに保存することになっているメソッドです。
public void SaveGame(String s){
String sav = s;
sav.concat(".dat");
try {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(sav));
oos.writeObject(cpu);
oos.close();
} catch(Exception ex) {
ex.printStackTrace();
}
}
そして、これはファイルからロードする方法です:
public void Load(String s){
if(s.contains(".dat")){
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(s));
cpu = (CPU)ois.readObject();
ois.close();
} catch(Exception ex) {
ex.printStackTrace();
}
}
}
私の質問は基本的に次のとおりです。これはうまくいきますか?CPU クラスを単純にシリアル化してファイルに保存し、それを読み戻して、そこからすべてのデータ (つまり、プレーヤー データ) を復元することはできますか?
私の記憶が正しければ、Java では「=」は右側のオブジェクトがコピーされることを意味しないため、もう 1 つの問題は、メソッド「Load」が終了すると、「cpu」(「Game の変数」 "-class) には、ファイルからロードした CPU がまだ含まれていますが、そこからデータを読み取ることができますか?