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

Entrée/Sortie Java Discussion :

[Serialisation][readObject] l'arbre de parcours


Sujet :

Entrée/Sortie Java

  1. #1
    Membre éclairé
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Points : 844
    Points
    844
    Par défaut [Serialisation][readObject] l'arbre de parcours
    Bonjour,

    Voila j'ai une classe A qui est serializable et pour des raisons techniques implemente la méthode "readObject"

    j'ai a present une classe B qui hérite de la classe A.
    J'ai besoin de spécialiser également la serialisation / deserialisation, donc j'implemente la méthode "readObject"

    Le profile de cette méthode m'impose d'être "private" donc ma classe B ne peut pas faire appel a super.readObject(....). Sur ce je me suis dis que la JVM devais faire des appels aux differents readObject de l'arbre d'heritage d'un objet. Est-ce vrai ? et si oui dans quelle ordre ?

    En gros est-ce que lors de la de-serialisation il va faire ???

    1. B.readObject seulement

    2. B.readObject + A.readObject

    3. A.readObject + B.readObject

    En est-il de même pour writeObject ? l'ordre d'appel est-il inversé ?

    Je me pose trop de question pour un Mardi Matin

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 91
    Points : 130
    Points
    130
    Par défaut
    Hello

    Je ne connais pas parfaitement le fonctionnement interne de la sérialisation mais d'après la Javadoc, les méthodes de lecture et écriture ne doivent être implémentée que dans le cas d'une sérialisation particulière et ne s'occuper que de l'état de l'objet induit par la classe directement et non de l'état des super-classes ou sous-classes.

    Ref : Serializable

  3. #3
    Membre éclairé
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Points : 844
    Points
    844
    Par défaut
    Ce qui tends a dire que la JVM s'occupe d'appeler les differents writeObject et readObject des differentes sous-classes.
    c'est pour ca qu'il dise que ces méthodes dans une classe particuliere ne doit s'occuper que d'elle même.

    Citation Envoyé par sedryk
    Hello

    Je ne connais pas parfaitement le fonctionnement interne de la sérialisation mais d'après la Javadoc, les méthodes de lecture et écriture ne doivent être implémentée que dans le cas d'une sérialisation particulière et ne s'occuper que de l'état de l'objet induit par la classe directement et non de l'état des super-classes ou sous-classes.

    Ref : Serializable

  4. #4
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Je n'ai rien trouve de precis la dessus.. mais il semblerait que la meme logique que pour les constructeurs soit respectee..

    J'ai fais un test et c'est le cas:

    D'abord le readObject de la classe mere A puis le readObject de la classe fille B

    La recommandation de ne traiter que les champs present dans la classe courante vient surement de la, pour eviter de casser l'init fait par un precedent readObject ..

    Bulbo

  5. #5
    Membre éclairé
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Points : 844
    Points
    844
    Par défaut
    Ca concorde bien avec ce que je pensais.
    Merci bcp.

    J'ai une autre question la dessus, mais je vais ouvrir un autre thread.

    Citation Envoyé par bulbo
    Je n'ai rien trouve de precis la dessus.. mais il semblerait que la meme logique que pour les constructeurs soit respectee..

    J'ai fais un test et c'est le cas:

    D'abord le readObject de la classe mere A puis le readObject de la classe fille B

    La recommandation de ne traiter que les champs present dans la classe courante vient surement de la, pour eviter de casser l'init fait par un precedent readObject ..

    Bulbo

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

Discussions similaires

  1. [ serialisation ] readObject
    Par hocinema dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 24/05/2008, 12h14
  2. [ serialisation ] readObject et ReadResolve
    Par hocinema dans le forum Langage
    Réponses: 1
    Dernier message: 18/05/2008, 23h14
  3. Arbre binaire parcours iteratif
    Par line86 dans le forum C
    Réponses: 8
    Dernier message: 26/09/2007, 00h58
  4. Ordre de parcours de l'arbre...
    Par Sylvain James dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 01/12/2002, 18h41
  5. arbre de parcour d'arborescence windows
    Par chupachoc dans le forum Composants
    Réponses: 7
    Dernier message: 09/09/2002, 08h09

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