[JAVA] nullPointerException

apprentiSorcier1 Messages postés 2 Statut Membre -  
apprentiSorcier1 Messages postés 2 Statut Membre -
Bonjour,

j'essaie de tester une classe qui gère une liste de maillons chaînés symétriques qui contiennent un objet de type générique (avec l'aide d'un élément courant) et j'obtiens toujours une exception due à un pointeur vide. En fait, cette exception est censée être bloquée par le fait que l'élément courant n'existe pas. Toutefois, l'exception est levée à la ligne du "return m.info();"

Descriptif des méthodes utilisées à l'intérieur de la méthode problème:

new MaillonSymetrique( MaillonSymetrique<T> precedent, element, MaillonSymetrique<T> suivant ) ---> Crée un objet de type générique qui pointe vers les objets précédent et suivant.

courantEstDefini() ---> Retourne TRUE si l'élément courant a été défini

info() ---> Retourne l'objet element du MaillonSymetrique<T> en question

Voici donc la méthode problème,

/**
* Retourne la valeur de l'élément courant s'il est défini.
* @return la valeur de l'élément courant.
* @throws NoSuchElementException si l'élément courant n'est pas défini.
*/
public T valeurElementCourant () throws NoSuchElementException{
MaillonSymetrique<T> m = new MaillonSymetrique( null, null, null );

if( !courantEstDefini() )
{
throw new NoSuchElementException( messageErreur );
}
else
{
m = elementCourant;
}

return m.info();
}

A voir également:

2 réponses

Utilisateur anonyme
 
Salut,

Tu peux, dans un premier temps, mettre ton message d'erreur dans m et agir en fonction de ce qui est retourné.

Cordialement,

Dan
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Je ne vois qu'une seule raison pour que ça plante ici, c'est que elementCourant vaut null, ce qui signifierai alors que courantEstDefini() ne fonctionne pas correctement, puisqu'elle aurait du renvoyer false lors de son appel.

Remarque : l'initialisation de m avec ton new(null,null,null) est totalement abject, cela
créé un objet en mémoire qui ne sera jamais utilisé !

public boolean courantEstDefini()
{
    return elementCourant!=null;
}

public T valeurElementCourant() throws NoSuchElementException
{
    if (courantEstDefini())
        return elementCourant.info();
    else
        throw new NoSuchElementException(messageErreur);
}
0
apprentiSorcier1 Messages postés 2 Statut Membre
 
En fait le problème se cachait beaucoup plus profondément que je l'imaginais. La syntaxe horrible de la méthode valeurElementCourant était due à un trop grand nombre d'essais à corriger un problème qui se trouvait ailleurs.
0