Pourquoi le pointeur est nul

ciarawom Messages postés 2 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour, voici le code de ma méthode, ici l'erreur c'est toujours java.lang.NullPointerException
at fr.emse.simulator.MyCell.getColor(MyCell.java:52)
et je ne comprends pas pourquoi il est nul?


public Color getColor(){



if (this.nature.type.equals("W")) {
return this.couleur=new Color(0,0,255);}
if (this.nature.type.equals("F"))
return this.couleur= new Color(0,255,28);
if (this.nature.type.equals("P"))
return this.couleur=new Color(7);
if (this.nature.type.equals("T"))
return this.couleur=new Color(0xff, 0xff, 0x00);
if (this.burned==true){

return this.couleur=new Color(80,80,80);}

return this.couleur;


}

2 réponses

tribun Messages postés 73052 Date d'inscription   Statut Membre Dernière intervention   12 550
 
Bonjour.
java est une source de problème sur les pc.
Vois ceci pour t'aider.

http://translate.google.be/...

Qui aime l'instruction ! trouve la connaissance qui vient de la réflexion !
PS. Créez souvent un point de restauration ! cela résout pas mal de problèmes.
0
KX Messages postés 19031 Statut Modérateur 3 020
 
"java est une source de problème sur les pc."
D'ailleurs programmer en Java est aujourd'hui un crime et la délation bat son plein à l'encontre de quiconque essayerait encore d'utiliser cette tare de l'informatique !
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Généralement une référence est null parce que c'est la valeur par défaut puisque aucun objet ne lui est attribué. Cela se corrige en initialisant correctement les valeurs.

public Color getColor()
{
    if (nature==null)
        throw new IllegalStateException("nature n'est pas initialisé");
    
    if (nature.type==null)
        throw new IllegalStateException("nature.type n'est pas initialisé");
    
    if (nature.type.equals("W"))
        couleur = new Color(0,0,255);
    else if (nature.type.equals("F")) 
        couleur = new Color(0,255,28); 
    else if (nature.type.equals("P")) 
        couleur = new Color(7); 
    else if (nature.type.equals("T")) 
        couleur = new Color(0xff, 0xff, 0x00); 
    else if (burned)
        couleur = new Color(80,80,80);} 
    
    return couleur;
}

Remarque : il est étonnant d'avoir un getteur qui modifie la valeur d'un attribut, d'autant plus conditionné par la valeur d'un deuxième attribut ! On s'attendrait plutôt à avoir seulement un "return couleur;" dans le getColor, ou alors de ne pas avoir du tout d'attribut "couleur", sa valeur étant uniquement décrite par nature.typeLa confiance n'exclut pas le contrôle
0