Java Deserialisierung

The Gunner

Ensign
Registriert
Aug. 2012
Beiträge
168
Hallo

Ich habe eine kleine Frage. Was passiert in Java wenn man ein Objekt deserialisiert, von der zugehörigen Klasse aber mittlerweile z.B. zwei Attribute entfernt wurden? Es sei angenommen, dass man eine custom serial verison UID angibt. Gibt das eine InvalidClassException?

Wenn man neue Attribute hinzufügt werden die ja einfach auf default gesetzt, beim entfernen ist es mir aber nicht ganz klar.

Und wie verhält sich das in C#?
 
Allgemein kommt es darauf an, ob die Objekte mit serialisiert wurden. Wenn ja fehlt natürlich die Information. Ob du das dann auslesen kannst und für solche Fälle Informationen festlegen kannst, weiß ich nicht. Afaik funktioniert die Validierung vor dem Einlesen durch eine GUID(? zumindest in Java)
 
Also bei C# ist mir das passiert es gab eine Exception und es wurde nichts eingelesen... ich hatte dafür keine Möglichkeit gefunden es doch noch zu umgehen. Genau deswegen, hab ich mir lieber eine XML Klasse gebastelt.

Gruß Gurke
 
The Gunner schrieb:
Es sei angenommen, dass man eine custom serial verison UID angibt. Gibt das eine InvalidClassException?

Wenn man neue Attribute hinzufügt werden die ja einfach auf default gesetzt, beim entfernen ist es mir aber nicht ganz klar.


Wenn du eine eigene version UID angibst und diese beim ändern der Klasse auch änderst, dann knallt es immer mit einer InvalidClassException, egal ob du Attribute hinzugefügt oder entfernst. Es knallt selbst dann, wenn du an der Klasse gar nichts änderst außer der UID. Verstehe deshalb auch deinen zweiten Satz nicht ganz, da das gar nicht erst funktioniert ohne Exception. Falls du jedoch die UID nicht veränderst, die Klasse aber schon, dann werden neu hinzugekommene Attribute mit dem Default-Wert belegt, und entfernte Attribute sind eben weg. Wo liegt das Problem :) ?
 
Zurück
Oben