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 :

[debutant] hashcode et sérialisation


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Par défaut [debutant] hashcode et sérialisation
    Salut !

    une petite question :

    Peut on considerer que la valeur retournée par hashCode() d'un objet sera exactement la même avant la sérialisation et après la désérialisation de cet objet ??

    Si oui, puis je affirmer que la valeur de retour du hashCode() d'un quelconque objet sera, à un quelconque instant t, toujours unique ?

    Merci !

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Par défaut
    si tout le monde se pose la question sans tester

    personne ne te repondra.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Par défaut
    Je ne pose pas cette question par paresse.

    En effet je ne vois pas ce que je pourrais tester puisque je pose une question concernant un conflit qui pourrait intervenir aléatoirement dans un contexte où beaucoup d'objets évolueraient après avoir été sérialisés .. désérialisés .... plusieurs fois.

    Je faisais donc appel à l'expertise de certains programmeurs connaissant suffisement les mécanismes (trop précis pour que j'ai le temps de m'y interesser, malheureusement) intervenant dans des choses telles que les hashcodes mais aussi de la sérialisation.

    En retour je ne m'attendais pas à trouver une boutade au gout douteux et condescendante.

    merci !

  4. #4
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    ça va dépendre de 2 choses :
    - Si tu as des champs transient (non sérialisés)
    - l'implémentation de hashcode.

    Ces 2 choses ensemble font que ça peut ne pas être vrai. Si par exemple tu as un champ transient qui intervient dans le calcul du hashcode, c'est évident que le hashcode ne sera pas pareil avant et après, puisque le champ transient aura sa valeur par défaut après désérialisation.

    Aussi si dans le calcul du hashcode intervient un champ static, ça risque de ne pas être égal. Mais bon si c'était le cas ça serait vraiment pas propre.

    Donc pour répondre clairement :

    Peut on considerer que la valeur retournée par hashCode() d'un objet sera exactement la même avant la sérialisation et après la désérialisation de cet objet ??
    ça dépend de l'implémentation de hashcode.

    Si oui, puis je affirmer que la valeur de retour du hashCode() d'un quelconque objet sera, à un quelconque instant t, toujours unique ?
    là par contre non. Si tu as par exemple un objet qui encapsule un entier et que cet entier intervient dans le calcul du hashcode ça ne sera pas vrai si cet entier est modifié entre les instants t et t'

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Par défaut
    merci pour ta réponse c'est très clair !

  6. #6
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    Encore un ptit détail : en général, l'implémentation de hashcode dans la classe Object converti l'adresse de l'objet en mémoire en entier (ce n'est pas précisé dans les specs JAVA mais c'est ce qui est généralement fait).

    ça veut dire que si tu as une classe qui hérite d'object et que tu ne redéfinis pas hashcode, l'objet avant et apres ont de fortes chance de ne pas avoir le même.

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/01/2007, 17h50
  2. [Debutant][XML]sérialisation
    Par Bb_TiTi dans le forum Persistance des données
    Réponses: 2
    Dernier message: 27/02/2006, 07h15
  3. [FLASH] pb debutant
    Par ultrakas dans le forum Flash
    Réponses: 2
    Dernier message: 05/06/2003, 00h48
  4. [debutant]Limiter le temps de saisi
    Par Nasky dans le forum C
    Réponses: 5
    Dernier message: 17/03/2003, 15h47
  5. Réponses: 3
    Dernier message: 09/02/2003, 01h09

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