-
1 pièce(s) jointe(s)
serial id sérialization
bonjour à tous,
j'utilise la sérialization pour enregistrer dans un fichier l'état de mon travail sur un logiciel que j'ai créé, toujours en phase de test, et je désérialise pour le récupérer, mais malgré les tutos sur le net, il me reste des flous sur ce mécanisme.
J'ai bien compris qu'un sérial ID était généré pour l'enregistrement en binaire, et que ce même ID était vérifié avant pour la désérialization.
J'ai des interrogations sur le dysfonctionnement visible sur la photo ci-dessous :
Pièce jointe 638880
Q1/ Par défaut, Eclipse écrit "1L". Cela veut-il bien signifier que la valeur du sérial ID est stocké dans un "Long" et que la valeur est "1"?
q2/ Lors de l'erreur de retour, la valeur locale indiquée est un nombre différent "421585......". Le Sérial ID de départ est donc mouliné avec la composition de la classe pour générer cette nouvelle valeur, qui sera stockée avec le reste du contenu de mon fichier, puis vérifiée pour valider une éventuelle désérialisation?
Q3/ Pourquoi lors de la désérialization, les deux valeurs, qui ont été créées à partir de la même classe, et du même sériaID, peuvent devenir différentes et générer une incompatibilité?
q4/ Dans cette considération, même si j'avais fixé moi-même un valeur au sérialVersionID, autre que "1L", les retours seraient différents et la problématique subsisterait?
q5/ Après recherche, je note que l'on peut stocker les objets, non plus, en "moulinage binaire", mais en "clé valeur" avec un encodeur de type xml ou même json. Quel système serait le plus efficient pour ne pas risquer une incompatibilité à l'ouverture, tout en étant facile d'usage en java?
Merci à tous....
-
De mémoire, c'est en gros, pour versionner la version de la classe sérialisé.