Le rôle de serialVersionUID :
Afin de maintenir la compatibilité des versions pendant la sérialisation, la désérialisation conserve toujours le caractère unique de l'objet lorsque la version est mise à niveau.
Il existe deux méthodes de génération :
L'un est le 1L par défaut, par exemple : private static final long serialVersionUID = 1L ;
La première consiste à générer un champ de hachage de 64 bits basé sur le nom de la classe, le nom de l'interface, la méthode et l'attribut du membre, etc., tels que :
privé statique final long serialVersionUID = xxxxL;
Lorsque votre classe implémente l'interface Serialisable, si SerialVersionUID n'est pas défini, Eclipse le fournira
La fonction d'invite vous demande de le définir. Dans Eclipse, cliquez sur l'icône d'avertissement dans la classe et Eclipse le fera.
Deux méthodes de génération sont automatiquement données. Si vous ne souhaitez pas le définir, vous pouvez également
Vous pouvez le désactiver et le configurer comme suit :
Fenêtre ==> Préférences ==> Java ==> Compilateur ==> Erreur/Avertissements ==>
Problèmes de programmation potentiels
Modifiez simplement l'avertissement de la classe Serialisable sans SerialVersionUID pour l'ignorer.
Si vous ne considérez pas les problèmes de compatibilité, désactivez-le, mais il est bon d'avoir cette fonction. Tant qu'une catégorie implémente l'interface Serialisable, Eclipse vous donnera une invite d'avertissement si SerialVersionUID n'est pas ajouté. la classe Serialisable est rétrocompatible.
Si votre classe est sérialisée et enregistrée sur le disque dur, mais que vous modifiez ultérieurement le champ de la classe (ajoutez ou réduisez ou renommez), une exception apparaîtra lors de la désérialisation, ce qui entraînera des problèmes d'incompatibilité.
Mais lorsque le SerialVersionUID est le même, il désérialisera différents champs avec la valeur par défaut du type, ce qui peut éviter les problèmes d'incompatibilité.