2010-12-03 13 views
5

In vielen meiner Datenbank-Entities, speichere ich einen serialisierten Hash-Wert von verschiedenen Werten. Wie wahrscheinlich ist es, dass die eingebaute Java-Klasse hashmap serialVersionUID ändert, so dass ich die hashmaps nicht mehr aus der Datenbank deserialisieren kann?Haben eingebaute Java-Klassen wie hashmap jemals ihre serialVersionUID?

Könnte dies mit einer neuen Java-Version Release passieren?

Antwort

2

Könnte dies mit einer neuen Java-Version Release passieren?

Wenn alles passieren kann, wird es :), aber ernst, wenn sie die serialVersionUID tun ändern, sie es einrichten, um rückwärts unvereinbar - Etwas, das in all diesen Jahren wahrscheinlich nicht geschehen ist.

Alle serializable Inkompatibilitäten oben aufgeführten sind für die 'default' serialVersionUID

1

Es könnte aber es ist sehr unwahrscheinlich. Das Java-Objekt Serialisierung Spezifikation definiert den genauen Algorithmus für serialVersionUID Generation (Kapitel 4 - http://download.oracle.com/javase/6/docs/platform/serialization/spec/class.html#4100) und erklärt auch, wie Typ Versionierung funktioniert und was eine kompatibler Typ Evolution (Kapitel 5-http://download.oracle.com/javase/6/docs/platform/serialization/spec/version.html) betrachtet wird.

Zurück zu Ihrer Frage. Sollte eine neue Java-Version eine umgekehrte inkompatible Änderung in der HashMap-Definition einführen, wird sie mit einer neuen Serialisierungs-UID geliefert. Java 5 hat deutlich gezeigt, wie viel Rückwärtskompatibilität für Java bedeutet - schauen Sie sich an, wie generische Typen mit Typlöschung kamen. Ich denke du bist vollkommen sicher. Das Schlimmste, was passieren könnte, ist, die HashMap als veraltet zu betrachten :), aber ich bin mir sicher, dass sie immer noch kompatibel sein wird.

0

Du bist nicht 'absolut sicher'. Dies ist bei einer der RowSet-Implementierungen passiert, und es ist nicht garantiert, dass dies nicht für die gesamte Swing-Instanz geschieht.

Allerdings bleibt es hoch unwahrscheinlich für Kern-Klassen.

Verwandte Themen