Ich benutze nette kleine Stück Xstream, um Serialisierung durchzuführen.Rückwärts Kompatibel in xstream
Ich habe die folgende Klasse:
// version 0
class A {
}
// version 1
class A {
Object o = new Object();
}
Um für mich Version 0 xml-Datei zu lesen Version 1 Klasse A zu konstruieren, muss ich die folgende Methode in Version 1 Klasse A hinzuzufügen:
class A {
private Object readResolve()
{
/* For backward compatible */
if (o == null) { o = new Object(); }
}
Object o = new Object();
}
Das funktioniert soweit.
Jetzt wird die Situation umgekehrt.
ich die folgende Klasse:
// version 0
class A {
Object o = new Object();
}
// version 1
class A {
}
Wie kann ich in der Lage 0, Lesen von XML-Dateiversion machen Klasse 1 A-Version zu konstruieren?
Hier ist die Ausnahme, die Sie erhalten werden, wenn Sie versuchen, dies zu tun:
run:
com.thoughtworks.xstream.converters.ConversionException: a : a
---- Debugging information ----
message : a : a
cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : a : a
class : javaapplication15.Main$A
required-type : javaapplication15.Main$A
path : /javaapplication15.Main$A/a
line number : 2
-------------------------------
null
BUILD SUCCESSFUL (total time: 2 seconds)
Was bedeutet XStream sagen, wenn Sie XML-Dokument mit zusätzlichen Sachen drin Deserialize mit? –