小编典典

序列化Java中的多个不同对象

java

我可能会尝试以困难的方式执行此操作,所以请让我知道是否有更好的解决方案。

我正在用Java开发一个简单的文字游戏,您可以通过GUI选择动作。我有几个班级正在尝试序列化一个是播放器,另一个是NPC。是否有一种简单的方法可以将一个以上的对象(播放器和NPC)序列化到同一文件中?我可以序列化一个对象并将其加载回游戏中。

我会以错误的方式处理吗?有没有更简单的方法来尝试保存游戏状态?

如果我有一个创建多个对象的类并序列化该类,那么它创建的对象也将被序列化吗?

谢谢


阅读 317

收藏
2020-11-26

共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
2020-11-26