我可能会尝试这么做,所以如果有更好的解决方案,请告诉我。
我正在用Java编写一个简单的文本游戏,您可以通过GUI选择您的操作。我有几个课程,我试图序列化一个是玩家,另一个是NPC。有没有一种简单的方法可以将多个对象(播放器和NPC)序列化到同一个文件中?我可以序列化一个对象并将其加载回游戏中。
我是以错误的方式来做这件事的吗?有没有更简单的方法来尝试保存游戏状态?
如果我有一个创建多个对象的类并且我序列化了该类,那么它创建的对象也会被序列化吗?
由于
答案 0 :(得分:1)
顺序编写对象的另一种方法是将它们存储在集合(例如HashMap)中,因为集合可以被序列化。这可能使得在检索时更容易管理,特别是如果您有许多对象要序列化/反序列化。以下代码演示了这一点:
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();
}
}
运行它应该导致:
first
second
答案 1 :(得分:0)
只需根据需要使用尽可能多的不同对象多次调用writeObject()
,然后相反地调用readObject()
同上。
很难相信你还没有尝试过。