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 :

WeakHashMap : Eviter le NullPointerException


Sujet :

Langage Java

  1. #1
    Membre averti
    Avatar de if_zen
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 275
    Points : 316
    Points
    316
    Par défaut WeakHashMap : Eviter le NullPointerException
    Bonjour,

    J'utilise une WeakHashMap pour stocker mes items de liste JList, et il arrive, à de rares occasions, de me retrouver devant un NullPointerException, que j'aimerais éviter.
    Voici le code incriminé (la classe est un ListCellRenderer) :

    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
    private WeakHashMap<Integer, Item> renderer = new WeakHashMap<Integer, Item>();
    ...
     
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean selected, boolean cellHasFocus) {
        ...
        if (value instanceof Employee) {
            if (renderer.get(index)==null) {
                renderer.put(index), new Item((Employee)value, false, selected));
            }
            Item item = renderer.get(index);
            // Le NullPointerException a lieu à la ligne suivante :
            item.setEmployee((Employee)value);
            ...
            return item;
        }
        ...
    }
    Pour moi le WeakHashMap a déréférencé un élément au mauvais moment. Lorsque j'actualise ma liste, je vide bien sûr ma variable renderer, mais je ne pense pas qu'il s'agisse d'un problème de synchronisation à ce niveau.

    Qu'en pensez-vous ? Je ne vois pas comment protéger ma liste à ce niveau.

    En vous remerciant.

  2. #2
    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,


    C'est normal puisque c'est le principe même des weakreference : la valeur peut être libéré à tout moment.

    Bref tu es obligé de vérifier la valeur de retour du get()...


    a++

Discussions similaires

  1. JPanel & getGraphics() : NullPointerException
    Par dingoth dans le forum Composants
    Réponses: 7
    Dernier message: 21/05/2004, 15h56
  2. Encodage de caracteres: eviter 81, 8D, 8F, 90, 9D ->
    Par Fladnag dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 27/04/2004, 11h17
  3. Pb affichage avec un PaintBox (pour eviter scintillement)
    Par juan64 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/04/2004, 09h21
  4. [opengl] Comment eviter l'ordre de faces ?
    Par :GREG: dans le forum OpenGL
    Réponses: 3
    Dernier message: 02/03/2004, 19h14
  5. Eviter deux nombres identiques dans un tirage aléatoire
    Par moon tiger dans le forum Pascal
    Réponses: 5
    Dernier message: 25/11/2002, 09h57

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