Сериализация нескольких разных объектов в Java
Возможно, я пытаюсь сделать это трудным путем, поэтому дайте мне знать, если есть лучшее решение.
Я делаю простую текстовую игру на Java, в которой вы выбираете свои действия с помощью графического интерфейса. У меня есть пара классов, которые я пытаюсь сериализовать, будучи игроком, а другой - NPC. Есть ли простой способ сериализации более одного объекта (игрока и NPC) в один файл? Я могу сериализовать один объект и загрузить его обратно в игру.
Я поступаю об этом неправильно? Есть ли более простой способ сохранить состояние игры?
Если у меня есть класс, который создает несколько объектов, и я сериализую этот класс, будут ли сериализованные объекты тоже?
Спасибо
2 ответа
Альтернативный подход к последовательной записи объектов состоит в том, чтобы хранить их в коллекции (например, 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
Просто позвони writeObject()
столько раз, сколько нужно разных объектов, и наоборот readObject()
то же самое.
Трудно поверить, что вы еще не пробовали это.