Maison >Java >javaDidacticiel >Énumérations Java : devriez-vous utiliser == ou égal à () pour comparer les membres ?

Énumérations Java : devriez-vous utiliser == ou égal à () pour comparer les membres ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-28 11:18:11432parcourir

Java Enums: Should You Use == or equals() to Compare Members?

Comparaison des membres d'énumération Java : == vs. equals()

Lorsqu'ils travaillent avec les types d'énumération de Java, les développeurs sont souvent confrontés à la question de savoir si pour utiliser l'opérateur d'égalité (==) ou la méthode equals() pour comparer les membres d'une énumération. Cette question se pose car les énumérations sont compilées en classes, ce qui entraîne une confusion sur les implémentations sous-jacentes.

Comprendre les énumérations Java

Les énumérations Java sont des classes avec des constructeurs privés et des membres statiques publics représentant les valeurs enum. Ces membres sont essentiellement des constantes et ne peuvent pas être modifiés.

Comparaison des membres d'une énumération

L'opérateur == et la méthode equals() peuvent être utilisés pour comparer les membres de l'énumération. La méthode equals() fournit un moyen standard de comparer des objets en Java, tandis que == compare les références des objets comparés.

Équivalence technique

Inspection de la source Le code de la méthode equals() révèle qu'elle s'en remet simplement à l'opérateur ==. Cela signifie que, techniquement, les deux approches sont équivalentes pour comparer les membres d'une énumération.

Approche recommandée

Cependant, il est généralement recommandé d'utiliser l'opérateur == pour comparer les énumérations. membres. Cette approche est :

  • Null-Safe : L'opérateur == renvoie false lors de la comparaison d'un membre d'énumération à null, alors qu'equals() peut lancer une NullPointerException.

Exemple

Le code suivant démontre l'utilisation de == et equals() pour comparer les membres de l'énumération :

public enum MyEnum {
    A, B, C
}

public static void main(String[] args) {
    MyEnum a = MyEnum.A;
    MyEnum b = MyEnum.B;

    System.out.println(a == b); // false
    System.out.println(a.equals(b)); // false
}

Dans cet exemple, == et equals() renvoient false car a et b font référence à des membres de l'énumération différents.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn