Methodes equals pour les Enum

Résolu
Maroc789
Messages postés
7
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
17 avril 2014
- 7 avril 2014 à 17:07
KX
Messages postés
16565
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
3 juillet 2022
- 7 avril 2014 à 18:57
Bonjour, mon problème est le suivant, j'aimerais savoir s'il faut redéfinir la méthode equals pour comparer avec les Enum .




if (!terrains.get(coord).getTypeTerrain().equals(TypesTerrains.MER)) {


Dans ce code il affiche un NPE alors je voudrais savoir si cela vient de equals ou non.
Merci de votre compréhension.

1 réponse

KX
Messages postés
16565
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
3 juillet 2022
124
Modifié par KX le 7/04/2014 à 18:58
Bonjour,

Non, il n'est pas nécessaire de redéfinir equals, c'est même fortement déconseillé. En effet un enum peut se comparer avec == comme un entier, donc la seule implémentation logique de equals pour un enum c'est :

public boolean equals(Object obj) {
    return this==obj;
}

C'est évidemment celle-ci qui est implémentée par défaut.

Pour ton problème, il suffit de décomposer ton traitement et voir sur quelle ligne l'exception apparaît.

c = terrains.get(coord);// NPE sur terrains, éventuellement sur coord
t = c.getTypeTerrain(); // NPE sur c

if (t != TypesTerrains.MER) {

La confiance n'exclut pas le contrôle
1