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

Collection et Stream Java Discussion :

Casting Object en Hashmap


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de toflofr
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2003
    Messages : 63
    Par défaut Casting Object en Hashmap
    Bonjour,

    Et bien voici mon problème j'ai une variable de type Object, et je veut la caster en Hashmap. (Pour info je passe une Hashmap au notify).
    Voici mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
                        public void notify(Object objectData)
                        {                       
                            logger.debug("Entree dans le notify");
                            //recup des infos                        
                            HashMap mapDataBuffer = new HashMap();
                            try
                            {                            
                                mapDataBuffer = (HashMap)objectData;
                            }
                            catch(ClassCastException ce)
                            {
                                logger.debug("pb de casting");
                                logger.debug(ce.getMessage());
                                logger.debug(ce.getLocalizedMessage());
                                logger.debug(ce.getCause());
    Et le message que je recup:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Nov 21 13:01:12 localhost.localdomain MainProcess.All:ID1: DEBUG pb de casting
    Nov 21 13:01:12 localhost.localdomain MainProcess.All:ID1: DEBUG
    Nov 21 13:01:12 localhost.localdomain last message repeated 2 times
    Donc en gros je n'y arrive pas, et j'ai aucun retour d'erreur concret. Je travail sur un environnemet particulier utilisant la JDK1.4.2_15.

    Si vous avez des suggestions.

    Merci d'avance.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Tu peux fournir la sortie de objectData.getClass().getName() ?

  3. #3
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Ben à priori si le cast échoue c'est qu'objectdata n'est pas du type HashMap justement. Mais il est vrai qu'il est bizarre que tu n'aies rien dans tes logs.

    Essaie d'afficher le type réel d'objectdata voir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    logger.debug(objectData.getClass());
    Edit: grilled!

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Deadpool Voir le message
    Ben à priori si le cast échoue c'est qu'objectdata n'est pas du type HashMap justement. Mais il est vrai qu'il est bizarre que tu n'aies rien dans tes logs.
    La JVM a la mauvaise habitude de ne pas fournir de message explicite dans ses exceptions (ClassCastException, OutOfMemory, etc..), donc getMessage() et autres renvoient rien ou une chaine vide...


    Cela a été corrigé avec Java 5.0 ou 6 (je ne suis plus tout à fait sûr ).

    a++

  5. #5
    Membre confirmé Avatar de toflofr
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2003
    Messages : 63
    Par défaut
    Nov 21 13:23:25 localhost.localdomain MainProcess.All1: DEBUG objectData.getClass(): class java.util.HashSet

    HashSet est comme HashMap, car je comprend pas pourquoi il y a eut une telle transformation.

  6. #6
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,



    La JVM a la mauvaise habitude de ne pas fournir de message explicite dans ses exceptions (ClassCastException, OutOfMemory, etc..), donc getMessage() et autres renvoient rien ou une chaine vide...


    Cela a été corrigé avec Java 5.0 ou 6 (je ne suis plus tout à fait sûr ).

    a++
    Ok, merci de la précision.

    Citation Envoyé par toflofr Voir le message
    Nov 21 13:23:25 localhost.localdomain MainProcess.All1: DEBUG objectData.getClass(): class java.util.HashSet

    HashSet est comme HashMap, car je comprend pas pourquoi il y a eut une telle transformation.
    Heu non rien à voir.

    Un Set est un ensemble d'éléments non dupliqués, une Map est un ensemble de couples Clés-valeurs.

  7. #7
    Membre confirmé Avatar de toflofr
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    63
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2003
    Messages : 63
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                Map mapReportInfo = new HashMap();
    	    mapReportInfo.put("reportName", reportName);
    	    mapReportInfo.put("tagData", tagData);            	    
     
    	    listener.notify( mapReportInfo );
    Voilà comment j'appelle mon notify, et je comprend pas pourquoi je me retrouve avec une HashSet.

    Avec ça, j'arrive pas à récup mes valeurs avec mes clefs.

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Tu n'appelles pas listener.notify(...) ailleurs dans ton programme ?

    Il y a forcément un moment ou tu appelles listener.notify(...) en passant en paramètre une HashSet !

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

Discussions similaires

  1. Unable to cast object of type "System.Windows.Application"
    Par OminiuS dans le forum Silverlight
    Réponses: 11
    Dernier message: 15/09/2010, 16h28
  2. [Stockage] String, Object, List, HashMap
    Par gojira dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 13/06/2010, 01h17
  3. Réponses: 11
    Dernier message: 06/05/2009, 17h13
  4. Cast Object[] en String[][]
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 11/10/2007, 15h12
  5. problème de cast object
    Par root76 dans le forum Langage
    Réponses: 14
    Dernier message: 12/04/2007, 13h42

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