Klasyczny problem serializacji w Javie (w sumie jej nieprawidłowego wykorzystania, do zapisu danych). Odpowiedź krótka – nie da się. Odpowiedź dłuższa – da się, ale to skomplikowane.
- Ładujesz swoje obiekty z pliku.
- Zapisujesz w postaci np. JSON, csv, czy innej, która nie opiera się o serializację java.
- Dokonujesz zmian w swojej klasie.
- Cieszysz się z nowego kodu.
- Przyszłe zapisy robisz do sensownego formatu.
Dlaczego wspomniałem, że serializacja jest nieprawidłowo wykorzystywana? Ano dlatego, że nie do końca była ona wymyślona do prostego zapisu danych na dysk. Serializacja została zaprojektowana z myślą o komunikacji sieciowej, a mechanizm weryfikujący poprawność klasy (sławetny SerialVesionUID
) miał gwarantować, że komunikujące się programy mają tę samą wersję klasy.
Niestety wszystkie tutoriale pokazują, jak zapisywać dane do pliku, bo to jest bardzo proste do ogarnięcia. Nie wymaga poruszania tematów związanych z komunikacją sieciową.