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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
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
Rejoignez-nous