Methodes equals pour les Enum [Résolu]

Signaler
Messages postés
7
Date d'inscription
mercredi 2 avril 2014
Statut
Membre
Dernière intervention
17 avril 2014
-
Messages postés
16361
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 juin 2021
-
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

Messages postés
16361
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 juin 2021
122
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