Comparaison des membres de l'énumération Java : == ou égal à()
Lorsque vous travaillez avec les énumérations Java, une question courante se pose concernant l'opérateur approprié à utiliser. utiliser pour comparer les membres de l'énumération. Traditionnellement, les développeurs utilisaient la méthode .equals(), comme le montre :
public useEnums(SomeEnum a) { if (a.equals(SomeEnum.SOME_ENUM_VALUE)) { ... } }
Cependant, quelques exemples démontrent l'utilisation de l'opérateur == à des fins de comparaison :
public useEnums2(SomeEnum a) { if (a == SomeEnum.SOME_ENUM_VALUE) { ... } }
Lequel de ces opérateurs faut-il privilégier pour comparer les membres de l'énumération ?
Équivalence technique et sécurité nulle
Fait intéressant, les deux approches sont techniquement correctes. Le code source de .equals() dans les énumérations Java révèle qu'il délègue simplement à ==. Cependant, il existe une différence subtile : == fournit également une sécurité nulle.
En utilisant ==, vous pouvez vous protéger contre les références nulles potentielles dans les comparaisons de membres d'énumération. Cet aspect devient particulièrement pertinent lorsque vous travaillez avec du code hérité de systèmes existants ou de bibliothèques tierces où des valeurs nulles peuvent occasionnellement apparaître.
Recommandation
Considérant l'avantage subtil de null la sécurité et le fait que == et .equals() effectuent essentiellement la même comparaison, il est généralement conseillé d'utiliser == lors de la comparaison des membres d'énumération Java. Cette recommandation correspond également aux préférences personnelles de l'auteur.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3