Задать вопрос

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

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

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

Почему и как этого избежать?
  • Вопрос задан
  • 155 просмотров
Подписаться 3 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Java-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Java-разработчик
    14 месяцев
    Далее
  • Нетология
    Java-разработчик с нуля
    12 месяцев
    Далее
Решения вопроса 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.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы