chaîne de comparaison avec énumération

J'analyse le morceau de code suivant à l'aide d'un outil d'analyse statique appelé FindBugs.

if(str.equals(enum.SOMEVALUE)) {//do something};

où str est une Chaîne de caractères et enum est une énumération. L'outil génère le message d'avertissement suivant ce code, et les états

Ce appels de méthode equals(Object) sur deux références de différents types de classe avec aucune des sous-classes. Selon le contrat de equals(), des objets de différentes classes faut toujours comparer inégalité; par conséquent, selon le contrat défini par java.lang.Objet.equals(Object), le résultat de cette comparaison sera toujours faux au moment de l'exécution.

si je remplace la ligne au-dessus de code:

if(str.equals(enum.SOMEVALUE.toString())) {//do something};

alors l'avertissement disparaît.Mais je ne suis pas sûr si l'avertissement que l'outil génère est vraiment vrai et si je suis la fixation de la bonne façon ? parce que j'ai vu de telles comparaisons avant et il semble fonctionner correctement.

source d'informationauteur comatose | 2012-05-11