2010-02-13 6 views
33

mögliche Dubletten:
Why should I bother about serialVersionUID?
what is a serial version id?Was ist die Seriennummer in Java?

Wenn ich eine neue Klasse erstellt java.util.logging.Level in Eclipse erstreckt, es hat mich gebeten, eine Standard hinzuzufügen, oder seriell erzeugt Versions-ID Ich fügte nur blind hinzu, ohne zu wissen, was es ist und warum ich es hinzufügen muss.

Kann mir jemand sagen, was es ist und warum es benötigt wird.

+3

Duplikate: http://stackoverflow.com/questions/615181/what-is-a-serial-version-id, http://stackoverflow.com/questions/285793/warum-sollte-ich-störe-über-serialversionuid – Bozho

Antwort

34

Die Seriennummer wird beim Serialisieren und Deserialisieren eines Objekts verwendet. Java erkennt, ob die Bytes, die Sie deserialisieren möchten, der lokalen Klassenversion entsprechen. Wenn nicht, wird eine Ausnahme ausgelöst.

Dies ist wichtig beim Ausführen von RMI oder persistenten Objektstrukturen.

Es gibt eine sehr gute Beschreibung über die Serialisierung in der javadoc of Serializable.

12

Dies ist die eindeutige Kennung für die Klasse, die für die Serialisierung verwendet wird.

Es ist ratsam, es zu deklarieren, wenn Sie so bald wie möglich serialisieren, denn wenn Sie keine deklarieren, dann wird beim Ändern der Klasse automatisch eine andere generiert und die Serialisierung wird nicht mehr funktionieren.

Eine gute Referenz ist hier: http://c2.com/ppr/wiki/JavaIdioms/AlwaysDeclareSerialVersionUid.html