web-dev-qa-db-fra.com

Qu'est-ce que Serialversionuid en Java?

Doublons possibles:
Pourquoi devrais-je me soucier de serialVersionUID?
qu'est-ce qu'un identifiant de version série?

Lorsque j'ai créé une nouvelle classe étendant Java.util.logging.Level dans Eclipse, il m'a demandé d'ajouter un ID de version série par défaut ou généré. J'ai simplement ajouté aveuglément sans savoir ce que c'est et pourquoi je dois l'ajouter.

Quelqu'un peut-il me dire de quoi il s'agit et pourquoi cela est nécessaire?.

39
GuruKulki

L'ID de version série est utilisé lors de la sérialisation et de la désérialisation d'un objet. Java reconnaît si les octets que vous souhaitez désérialiser correspondent à la version de la classe locale. Sinon, il lèvera une exception.

Ceci est important lorsque vous effectuez RMI ou des structures d'objets persistantes.

Il y a une très bonne description de la sérialisation dans le javadoc de Serializable .

37
tangens

Il s'agit de l'identifiant unique de la classe, utilisé pour la sérialisation.

Il est sage de le déclarer si vous sérialisez le plus tôt possible, car si vous n'en déclarez pas un lors du changement de classe, il en générera un autre automatiquement et la sérialisation cessera de fonctionner.

Une bonne référence est ici: http://c2.com/ppr/wiki/JavaIdioms/AlwaysDeclareSerialVersionUid.html

12
metismo