IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[débutant]remarques dans mes class


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut [débutant]remarques dans mes class
    j'ai dans plusieurs de mes class, cette remarque sur eclipse

    The serializable class PreferencePanel does not declare a static final serialVersionUID field of type
    long


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class PreferencePanel extends JPanel{}
    Pouvez-vous me dire ce que c'est et comment l'éviter?

    merci beaucoup

  2. #2
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Lorsque tu executes un programme java, tu crées des objets dans la mémoire vive.
    Lorsque le programme se termine, ces objets sont perdus.

    Il peut arriver à un moment que tu souhaites mémoriser ces objets au delà de la vie du programme (on appelle ça persistance)

    Un des moyens de rendre persistant un objet est de le sérialiser. Java transforme ton objet en code binaire que tu peux enregistrer sur le disque dur dans un fichier. Et inversement, java peut recharger cet objet en le désérialisant (lit le code binaire dans un fichier et reconstruit l'objet).

    Bien entendu, cela peut se faire si le code de ta classe n'évolue pas entre temps (pas de nouveaux attributs enlevés/ajoutés) sinon comment ferait java ?
    Par précaution, on définit donc une constante static final long serialVersionUID qui indique la version de ta classe. On fait évoluer ce numéro à chaque nouvelle version. Tu comprendras donc que Java n'est alors capable de lire que les objets ecrits dans la même version.

    Ceci étant dit, toutes les classes n'ont pas besoin d'être sérialisée et c'est pourquoi tu as un warning. Dans éclipse, tu peux enlever ce warning dans les options ou au niveau de ta classe en utilisant une annotation @suppresswarning peut être.

  3. #3
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    question de gros débutant! quand faut t'il serialiser ou non?
    Si eclipse me fait cette remarque, c'est que mon code n'est pas très pro!

    merci beaucoup pour tes explications... c'est très explicite

  4. #4
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Personnellement, j'ai désactivé le warning dans éclipse.

    Si je devais mettre un serialVersionUID, j'en metterai uniquement un dans mes classes qui implémentent l'interface Serializable et ceci une fois que mon code sera à peu près figé et utilisé.

    A la question, quand est-ce qu'une classe doit implémenter l'interface Serializable ? à chaque fois qu'elle doit être sérialisé !

    A la question, quand est-ce qu'une classe doit être sérialisé ? A chaque fois qu'un client de ta classe (une autre classe qui l'utilise) est susceptible d'enregistrer des instances de ta classe par sérialisation !

    Si tu écris une librairie (API), autant les rendre sérializable sinon ça dépend de ce que tu veux faire.

    En programmation web, il faut sérialiser tous les objets Java susceptibles d'être mis dans la session car les serveurs d'applications peuvent mémorisés ces sessions sur le disque dur.

  5. #5
    Membre éclairé Avatar de pingoui
    Homme Profil pro
    Activité professionnelle sans liens avec le developpement
    Inscrit en
    Juillet 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Activité professionnelle sans liens avec le developpement
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2004
    Messages : 584
    Par défaut
    ok merci pour tes informations

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 13/09/2006, 09h13
  2. Réponses: 14
    Dernier message: 05/09/2006, 01h17
  3. [DAO] Comment gérer les liens avec la bdd dans mes classes?
    Par Wormus dans le forum Autres
    Réponses: 6
    Dernier message: 22/02/2006, 16h14
  4. Réponses: 4
    Dernier message: 08/11/2005, 15h10
  5. Réponses: 13
    Dernier message: 25/03/2005, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo