J'utilise un petit morceau sympa de xstream pour effectuer la sérialisation.Backward Compatible dans xstream
J'ai la classe suivante:
// version 0
class A {
}
// version 1
class A {
Object o = new Object();
}
Pour moi de lire la version 0 fichier xml pour construire la version 1 classe A, je vais devoir ajouter la méthode suivante dans la version 1 classe A:
class A {
private Object readResolve()
{
/* For backward compatible */
if (o == null) { o = new Object(); }
}
Object o = new Object();
}
Cela fonctionne très bien jusqu'à présent.
Maintenant, la situation est inversée.
J'ai la classe suivante:
// version 0
class A {
Object o = new Object();
}
// version 1
class A {
}
Comment puis-je en mesure de faire la lecture de la version du fichier xml 0, pour construire la classe A version 1?
est ici l'exception que vous allez obtenir, si vous essayez de le faire:
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)
Qu'est-Xstream dire si vous deserialize en utilisant des documents XML avec des choses supplémentaires dedans? –