Как использовать сериализацию в качестве сохранения?

Добрый день.
Для своего домашнего проекта, сделал файл сохранения через сериализацию.
Все замечательно работало.
Но когда пошли изменения в классах для сохранения, стало падать все сохранение, хотя по задумке должны были не читаться только изменные классы.
Но при изменении одного класса получается ClassCastException или InvalidClassException именно на этой строчке
Map<String, Object> saveMap = (HashMap<String, Object>) oin.readObject();

И валится всё сохранение.
Хотя по логике должен валится один класс, так как мы читаем в этой строке не конкретный класс, а Object. И я потом уже привожу object к какому-то конкретному типу.

Почему и как этого избежать?
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Со стандартной сериализацией этого не избежать никак. Предлагаю использовать сторонние библиотеки:
- json формат - куча библиотек для работы с ним, например https://github.com/google/gson
- kryo - отличный и очень быстрый сериализатор (!) - https://github.com/EsotericSoftware/kryo
- protobuf - тоже очень неплох - https://developers.google.com/protocol-buffers/doc...
- xml формат - куча библиотек, даже встроенные в поставку JVM

Из этого всего разнообразия я бы остановился или на xml/json или на kryo. Но если нужна кроссплатформенность, то protobuf.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы