Serialization

Adriano10

Bekanntes Mitglied
sample.model.TestProgramm
Java:
public interface Test extends Serializable {

    void initMatrix(TestProgramm.Cell[][] cells);
   
}

Wenn ich das speichere und dann das Programm erneut starte und danach gespeicherte Datei lade, bekomme ich diese Meldung. Gibt es Mechanismen, mit diesem Problem umzugehen? Mit dem XML habe ich schon versucht und es klappt, aber ich möchte, das zu lösen.


local class incompatible: stream classdesc serialVersionUID = 2076309271985945354, local class serialVersionUID = 8277631950426711480

vielen Dank im Voraus
 

LimDul

Top Contributor
Siehe hier: https://www.baeldung.com/java-serial-version-uid

Du musst eine private static final long serialVersionUID in allen Klassen, die Serializable sind, definieren (die kann durchaus 1L sein).

Die definiert quasi die "Version" der Klasse. Wenn du Attribute entfernst oder ähnliches solltest du sie anpassen, weil dann die serializierten Formen nicht mehr identisch.

Gibt man sie nicht an, dann generiert Java eine und die kann durchaus schon bei kleineren, eigentlich kompatiblen Änderungen, sich ändern.


Grundsätzlich würde ich aber die Serializierung ins Binärformt nicht als sinnvolle, persistente Speichermethode sehen. Dazu kann die zu leicht bei Änderungen an den Klassen kaputt gehen. XML oder dedizierte Datentransformationen sind da in der Regel sinnvoller.
 

Neue Themen


Oben