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

Java Discussion :

[EnumMap] NullPointerException à l'initialisation


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut [EnumMap] NullPointerException à l'initialisation
    Bonjour,

    j'ai un problème avec la classe EnumMap, qui me renvoie systématiquement une NullPointerException pendant son instanciation... Je l'utilise de la manière suivante dans une classe Charset :

    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
     
    public class Charset extends Sprite {
     
        private EnumMap<Direction, CoreImage> standing;
     
        public Charset() {
            super();
            // Allocation : lève une NullPointerException
            standing = new EnumMap<Direction, CoreImage>(Direction.class);
     
            // Remplissage ()
            for (Direction o : Direction.values()) {
                standing.put(o, extractCellFromBoard(o.getValue()));
            }
        }
    }
    Et voilà la classe Direction :

    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
     
    package scene.event.state;
     
    public enum Direction {
     
        SOUTH(0), WEST(1), EAST(2), NORTH(3);
        protected final int value;
     
        Direction(int value) {
            this.value = value;
        }
     
        public int getValue() {
            return value;
        }
    }
    Quelqu'un aurait une idée sur l'origine du problème ?

  2. #2
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new EnumMap<Direction, CoreImage>(Direction.class);
    Tu es vraiment sur que ca vient de la?

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Citation Envoyé par Heimdal Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new EnumMap<Direction, CoreImage>(Direction.class);
    Tu es vraiment sur que ca vient de la?
    Je n'ai mis que l'extrait problématique du code, mais oui, le problème vient apparemment de cette ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java.lang.NullPointerException
            at java.util.EnumMap.<init>(EnumMap.java:113)
            at scene.event.charset.Charset.<init>(Charset.java:33)
    [EDIT]
    Je viens d'ajouter cette ligne-là dans mon constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EnumMap<Direction, String> test = new EnumMap<Direction, String>(Direction.class);
    Elle renvoie la même exception.
    Donc a priori mon type enum "Direction" ne serait pas bon ?...

  4. #4
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Ton enum a l'air OK... Ça me laisse perplexe.

    Tu utilises quelle JRE?
    Ça donne quoi en remplaçant ton EnumMap par une bête HashMap?

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    J'ai ajouté ces 2 lignes dans mon constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            HashMap<Direction, CoreImage> test = new HashMap<Direction, CoreImage>();
            EnumMap<Direction, CoreImage> testenum = new EnumMap<Direction, CoreImage>(Direction.class);
    Et le HashMap s'instancie bien comme il faut, avant que le EnumMap ne fasse planter.

    Pour mon JRE, je signale que j'ai ce Warning à la compil et au lancement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: nbjdk.active=JDK_1.6 or nbjdk.home=${platforms.JDK_1.6.home} is an invalid Java platform; ignoring and using /usr/lib/jvm/java-6-sun-1.6.0.15
    (j'utilise netbeans 6.8 sous ubuntu)

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Bon, je n'ai pas trouvé de solution pour les enumMap donc je les ai tous remplacés par des HashMap de template équivalent. Ce sera moins performant, mais bon.

    En attribut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private HashMap<Direction, CoreImage> standing;
    Et dans le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    standing = new HashMap<Direction, CoreImage>(Direction.values().length);
    Ça compile, et mon programme tourne nickel.

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

Discussions similaires

  1. NullPointerException sur initialisation de driver JDBC
    Par User Name dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 13/12/2013, 23h33
  2. Créer et initialiser un composant TStatusBar :help:
    Par James_ dans le forum C++Builder
    Réponses: 10
    Dernier message: 21/08/2003, 08h52
  3. [servlet] initialisation d'objets
    Par tiPouick dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 05/08/2003, 12h12
  4. Initialisation de XMLModule
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 10
    Dernier message: 01/04/2003, 10h08
  5. initialisation Directinput avec delphi
    Par Madmaxx dans le forum DirectX
    Réponses: 1
    Dernier message: 21/02/2003, 17h37

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