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 :

problème de cast object


Sujet :

Langage Java

  1. #1
    Membre du Club
    Architecte de système d’information
    Inscrit en
    Septembre 2005
    Messages
    236
    Détails du profil
    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Septembre 2005
    Messages : 236
    Points : 67
    Points
    67
    Par défaut problème de cast object
    Bonjour,


    je vous explique mon probème , mon but est de créer un dico tel que: hash= {clé (sting), valeur tableau[objet employe, string]}
    du coup je m y prend comme suit:

    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
    16
    17
    18
     
     
    HashTable  hash= new HashTable();
    allEmp  est une collection java de employe;
     
     
     
     
          for (Iterator it = allEmp.iterator();it.hasNext();) {
                              Employe emp= (Employe ) it.next();
                              Object arr[]= {emp,"0"};  
                              hash.put(emp.getIdEmploye(),arr);
          }
     
     
          Object[] arr = (Object[]) hash.get("65" );
          String s= (String) arr[1];
          System.out.println(s);

    mais ça me mets un nulpointerexception au niveau de la ligne :
    Object[] arr = (Object[]) hash.get("65" );



    je vosi pas d'ou ça pourrait bvenir .



    merci

  2. #2
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Hummm, es-tu sur que tu as un employé dont l'id est 65??? Car je pencherais pour dire que non et donc hash.get("65") te renvoi null et caster null fait un nullPointer

  3. #3
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    Question : c'est quoi 'emp.getIdEmploye' ?

  4. #4
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    A mon avis, ton getIdEmploye, qui devrait être une méthode et non pas un champ soit dit en passant, est un entier. Or tu fais le get sur une String, donc ça te renvoie null puisque la valeur "65" n'est pas une clé.

  5. #5
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par maxf1
    caster null fait un nullPointer
    Non : caster un null renvoi simplement un null

    Je pense plutôt que c'est la variable hash qui n'est pas initialisé (un conflit de nom peut-être ?)

    a++

  6. #6
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Citation Envoyé par remika
    A mon avis, ton getIdEmploye, qui devrait être une méthode et non pas un champ soit dit en passant, est un entier. Or tu fais le get sur une String, donc ça te renvoie null puisque la valeur "65" n'est pas une clé.

    Je pense que getIdEmploye renvoi au moins un objet sinon il y aurait une erreur de compilation, put(Object, Object) si je ne me trompe pas.

  7. #7
    Membre du Club
    Architecte de système d’information
    Inscrit en
    Septembre 2005
    Messages
    236
    Détails du profil
    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Septembre 2005
    Messages : 236
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par g0up1l
    Question : c'est quoi 'emp.getIdEmploye' ?
    en fait c 'est emp.getIdEmploye(), et ça renvoit un Long

  8. #8
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Citation Envoyé par adiGuba
    Salut,


    Non : caster un null renvoi simplement un null

    Je pense plutôt que c'est la variable hash qui n'est pas initialisé (un conflit de nom peut-être ?)

    a++
    C'est possible mais alors il ne faut pas qu'il passe dans le for, sinon ca planterait d'abord dans le for

  9. #9
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    Ba voilà, tu fais un get sur une String alors que c'est sur un Long que tu devrais le faire...
    (@maxf1 : ouep effectivement int ou Integer bien sûr, et aucun problème en Java5 avec l'autoboxing )

  10. #10
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Citation Envoyé par remika
    (@maxf1 : ouep effectivement int ou Integer bien sûr, et aucun problème en Java5 avec l'autoboxing )
    Ah oui ce fameux autoboxing sur java5.... Je n'y suis encore pas passez, lol! Pour les boites en général c'est 1.4 encore. Donc je reste sur l'ancetre pour le moment

  11. #11
    Membre du Club
    Architecte de système d’information
    Inscrit en
    Septembre 2005
    Messages
    236
    Détails du profil
    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Septembre 2005
    Messages : 236
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par remika
    Ba voilà, tu fais un get sur une String alors que c'est sur un Long que tu devrais le faire...
    (@maxf1 : ouep effectivement int ou Integer bien sûr, et aucun problème en Java5 avec l'autoboxing )
    meme avec ça , ça marche pas:
    Object[] arr = (Object[])hash.get(Long.getLong("65"));

    sachant que que l'element dont la clé est 65 existe bien

  12. #12
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    essaie avec ou au lieu de

  13. #13
    Membre du Club
    Architecte de système d’information
    Inscrit en
    Septembre 2005
    Messages
    236
    Détails du profil
    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Septembre 2005
    Messages : 236
    Points : 67
    Points
    67
    Par défaut
    yes c 'était ça. merci beaucoup

  14. #14
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par maxf1
    C'est possible mais alors il ne faut pas qu'il passe dans le for, sinon ca planterait d'abord dans le for
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[] arr = (Object[])hash.get(Long.getLong("65"));
    Cette ligne ne peut provoquer un NullPointer seulement si hash est null...
    Si hash est valide alors l'erreur doit surement survenir plus loin dans le code...

    Citation Envoyé par root76
    yes c 'était ça. merci beaucoup
    Pourquoi s'embêter comme cela ! L'autoboxing est justement fait pour éviter cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[] arr = (Object[])hash.get( 65L );
    a++

  15. #15
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Points : 101
    Points
    101
    Par défaut
    Voilà un code qui me retourne ce qu'il faut :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    import java.util.ArrayList;
    import java.util.Hashtable;
    import java.util.Iterator;
     
     
    public class EmpMain
    {
      public static void main(String args[]) 
      {
        Hashtable  hash= new Hashtable();
        ArrayList<Employe> allEmp = new ArrayList<Employe>();
        for(int i=0;i<100;i++)
        {
          allEmp.add(new Employe("Nom de "+i,new Long(i)));
        }
        for (Iterator it = allEmp.iterator();it.hasNext();) 
        {
          Employe emp= (Employe ) it.next();
          //C peut etre ici le probleme : faire un new Object[]
          Object arr[]= new Object[]{emp,"0"};
          hash.put(emp.getIdEmploye(),arr);
        }
        Object[] arr = (Object[]) hash.get("65" );
        String s= (String) arr[1];
        System.out.println(s + " name="+((Employe)arr[0]).getName());
      }
    }  
      class Employe
      {
        private String name;
        private Long id;
     
        public Employe(String a_name, Long a_Long)
        {
          name = a_name;
          id = a_Long;
        }
        public String getIdEmploye()
        {
          return id.toString();
        }
        public Long getId()
        {
          return id;
        }
        public String getName()
        {
          return name;
        }
      }

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

Discussions similaires

  1. Problème de cast d'un Object en Long
    Par fetano dans le forum JDBC
    Réponses: 13
    Dernier message: 24/08/2014, 12h18
  2. [JDBC Driver][JSTL] Problème de cast de données
    Par GyLes dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/09/2005, 10h00
  3. problème de cast!
    Par LaseLiep dans le forum Langage
    Réponses: 3
    Dernier message: 03/06/2005, 09h30
  4. Problème de cast/serialization/externalization ?
    Par Linlin dans le forum CORBA
    Réponses: 1
    Dernier message: 06/12/2004, 16h46
  5. [C#] Problème de casting de @IDENTITY
    Par bilb0t dans le forum Accès aux données
    Réponses: 7
    Dernier message: 03/09/2004, 09h42

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