2013-10-14 5 views
1

Я как бы растерян. Предположим, у меня есть игра, состоящая из некоторых плит и игроков. Все эти объекты необходимо сохранить, чтобы я мог позже начать игру и восстановить состояние. Я уже делаю это с помощью простых файлов, таких как XML-файл или текстовые файлы, где я просто печатаю тип плитки и координаты в файл, а затем потом читаю и разбираю и создаю новые объекты на основе информации в текстовом файле.Java Serialization vs Plain text file

Мой вопрос: зачем мне сериализовать мои объекты, когда я могу просто сохранить их атрибуты в текстовый файл? Много ли играете сериализовать свои объекты, используя текстовые файлы? Есть ли польза? Я мог представить себе, что сериализация сохраняет экземпляр объекта, так что вам не нужно впоследствии создавать новый экземпляр объекта, как если бы вам приходилось использовать текстовый файл. Но я действительно не знаю!

+3

Вы сериализуете свои объекты. Вы просто делаете это самостоятельно, а не используете библиотеку/фреймворк для этого. – tom

+0

Нет никакого большого преимущества для сериализации, и это может быть довольно многословным. Лучше всего использовать какой-то «структурированный» файл, хотя - CSV, XML, JSON и т. Д. JSON - привлекательный выбор, поскольку есть хорошая возможность конвертировать из/в объекты Java (хотя и небольшая кривая обучения). –

ответ

1

Главное преимущество сериализации в Java заключается в том, что вам не нужно вручную делать чтение/запись в файлы, как вы это делаете сейчас. Вам просто нужно реализовать интерфейс Serializable, и Java позаботится об этом.

Вот хороший учебник использования сериализации в Java: http://www.tutorialspoint.com/java/java_serialization.htm

1
  1. Я думаю сериализации запишет содержимое в двоичном формате, поэтому он будет потреблять меньше пространства, чем соответствующий текст

  2. вы можете напрямую получить объект java из сериализованного файла

  3. Статическое состояние переменной не сохраняется при использовании сериализации

+0

Точка 1 очень сомнительна, Java-сериализованные объекты обычно (всегда?) Больше, чем простая пользовательская форма (см. Http://stackoverflow.com/q/18700347/839128). Точка 3 также спорна, так как пользовательская сериализация, подобная OP, может выбрать, хочет ли она сохранять статические поля. – MikeFHay

0
  1. У вас есть контроль версий через UID.
  2. Его быстрый.
  3. Вам не нужен дополнительный код.