SerialVersionUID warning, que faire ?
Résolu
jklms
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
jklms Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
jklms Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je programme en java avec Eclipse. J'essaie toujours de régler tous les warnings qu'il me propose, mais j'en ai un dont je ne sais pas quoi faire :
Je ne comprends pas vraiment quel est le problème, j'ai très très souvent ce warning, jusqu'à présent je ne faisais rien, mais maintenant que je me débrouile un peu mieux en java j'aimerais savoir pourquoi j'ai ce warning, et ce qu'il faut faire pour le régler.
Merci
Je programme en java avec Eclipse. J'essaie toujours de régler tous les warnings qu'il me propose, mais j'en ai un dont je ne sais pas quoi faire :
The serializable class IncorrectAutoCheckFile does not declare a static final serialVersionUID field of type long
add default serial version ID
add generated serial version ID
add @Suppress warnig
Je ne comprends pas vraiment quel est le problème, j'ai très très souvent ce warning, jusqu'à présent je ne faisais rien, mais maintenant que je me débrouile un peu mieux en java j'aimerais savoir pourquoi j'ai ce warning, et ce qu'il faut faire pour le régler.
Merci
A voir également:
- SerialVersionUID warning, que faire ?
- Warning zone telechargement - Accueil - Outils
- Téléchargement et streaming illégal : voici les adresses des sites pirates que les FAI vont bloquer - Accueil - Services en ligne
- Cpu fan fail warning control - Forum Matériel & Système
- Symbole warning word ✓ - Forum Word
- Quota warning free - Guide
3 réponses
Lorsqu'une classe est Serializable (elles le sont toutes en Swing par exemple) elle devrait avoir un numéro de version.
Par défaut tu peux faire comme ceci :
Certains outils comme Eclipse peuvent également générer une valeur "unique" pour la classe en faisant une sorte de hachage sur les attributs, ce qui permet d'avoir un numéro différent à chaque fois que tu ajoutes ou supprimes un attribut.
Le but de cet identifiant étant de savoir lors du processus de (dé)sérialisation si l'objet que tu manipules est bien une instance de la classe que tu veux lui attribuer.
Voir la documentation : https://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html
Par défaut tu peux faire comme ceci :
private static final long serialVersionUID = 1;
Certains outils comme Eclipse peuvent également générer une valeur "unique" pour la classe en faisant une sorte de hachage sur les attributs, ce qui permet d'avoir un numéro différent à chaque fois que tu ajoutes ou supprimes un attribut.
Le but de cet identifiant étant de savoir lors du processus de (dé)sérialisation si l'objet que tu manipules est bien une instance de la classe que tu veux lui attribuer.
Voir la documentation : https://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html
donc, si je comprends bien, dans les projets où on ne se sert pas de Sérialization, on peut "s'en foutre" et ajouter un suppress warning...
merci ;)
merci ;)
Sauf que tu ne sais pas toujours les classes qui ont besoin de sérialiser des objets, ce n'est pas parce que tu ne l'utilises pas explicitement, qu'il n'y a pas un mécanisme "caché" qui va l'utiliser.
Moi je dirais plutôt que si tu es dans un cas simple, c'est à dire où tu ne mélanges pas plusieurs versions de la même classe, alors tu mets 1 tout le temps. Ça supprimera tes warning et ça t'évite d'éventuelles erreurs plus tard, donc ça coûte rien de rajouter une petite ligne de code...
Il n'y a vraiment que dans le cas où tu utilises intensivement la sérialisation où il faudrait penser à changer tous les numéros de versions à chaque changement, mais effectivement dans ton cas, ça n'a pas grande importance.
Moi je dirais plutôt que si tu es dans un cas simple, c'est à dire où tu ne mélanges pas plusieurs versions de la même classe, alors tu mets 1 tout le temps. Ça supprimera tes warning et ça t'évite d'éventuelles erreurs plus tard, donc ça coûte rien de rajouter une petite ligne de code...
Il n'y a vraiment que dans le cas où tu utilises intensivement la sérialisation où il faudrait penser à changer tous les numéros de versions à chaque changement, mais effectivement dans ton cas, ça n'a pas grande importance.