La comparaison de Java enum membres: == ou equals()?

Je sais que Java enums sont compilés pour les classes avec les constructeurs privés et un tas de public static membres. Lorsque l'on compare les deux membres d'une enum, j'ai toujours utilisé des .equals(), par exemple

public useEnums(SomeEnum a)
{
    if(a.equals(SomeEnum.SOME_ENUM_VALUE))
    {
        ...
    }
    ...
}

Cependant, je viens de tomber sur un code qui utilise l'opérateur = == au lieu de .equals():

public useEnums2(SomeEnum a)
{
    if(a == SomeEnum.SOME_ENUM_VALUE)
    {
        ...
    }
    ...
}

De l'opérateur qui est celui que je dois utiliser?

  • J'ai simplement tombé sur une question très semblable: stackoverflow.com/questions/533922/...
  • Je suis surpris que dans toutes les réponses (en particulier celui d'polygenelubricants, qui explique en détail pourquoi == œuvres) qu'un autre gros avantage de l' == n'a pas été mentionné: qu'il rend explicite la façon dont les énumérations de travail (comme un ensemble fixe d'objets singleton). Avec est égale à elle conduit à penser qu'il peut en quelque sorte être plusieurs instances de la même enum '"alternative" flottant autour.
  • Garder les choses simples. "==" est plus lisible et cela fonctionne parce que les énumérations sont singleton par défaut. Ref
InformationsquelleAutor Matt Ball | 2009-11-17