Si vous ne spécifiez pas un serialVersionUID
dans votre Serializable
le compilateur Java en spécifiera un pour vous - il s'agit essentiellement d'un hachage du nom de la classe, des noms d'interface, des méthodes et des champs de la classe. Les méthodes peuvent être modifiées à tout moment. Ainsi, si vous souhaitez modifier la façon dont une classe stockée est désérialisée, vous pouvez remplacer la méthode readObject. Si vous spécifiez l'option serialVersionUID
dans votre code, le compilateur ne le remplacera pas, même si vous effectuez des modifications incompatibles, ce qui peut entraîner une erreur de compilation. exception au moment de l'exécution -- votre IDE ou votre compilateur ne vous donnera pas d'avertissement. (EDIT -- merci EJP) Les IDE tels qu'Eclipse peuvent insérer l'UID du compilateur pour vous, si vous voulez vérifier facilement comment le compilateur voit certaines modifications.
Si vous effectuez souvent des modifications, conservez une ancienne version du fichier disque pour tester la désérialisation. Vous pouvez écrire des tests unitaires pour essayer de lire l'ancien fichier, et voir si cela fonctionne ou si c'est totalement incompatible.
Une mise en garde, j'ai personnellement fait l'expérience de la douleur que représente le fait de travailler avec Serializable
des classes destinées à l'origine à un stockage à long terme qui ont été mal conçues. Par exemple, le stockage des éléments de l'interface graphique sur le disque plutôt que leur création en cas de besoin. Demandez-vous si Serializable
est vraiment le meilleur moyen de sauvegarder vos données.
0 votes
En rapport avec stackoverflow.com/questions/3678136/