Comparez Java Enum en utilisant la méthode == ou equals() en Java

Mohammad Irfan 12 octobre 2023
  1. Compare Enum à l’aide de l’opérateur == en Java
  2. Compare Enum en utilisant la méthode equals() en Java
  3. Comparer les valeurs d’énumération et gérer la sécurité null
  4. Comparer deux valeurs d’énumération différentes en Java
Comparez Java Enum en utilisant la méthode == ou equals() en Java

Ce didacticiel explique comment comparer Java enum à l’aide de l’opérateur == ou de la méthode equals() en Java.

Enum est un ensemble de constantes utilisées pour collecter des ensembles de données tels que le jour, le mois, la couleur, etc. En Java, pour créer une énumération, nous utilisons le mot-clé enum, puis fournissons des valeurs pour le type.

Cet article vous montrera comment comparer les valeurs d’énumération et les objets. Comprenons avec quelques exemples.

Compare Enum à l’aide de l’opérateur == en Java

L’opérateur == (égal) est un opérateur binaire qui nécessite deux opérandes. Il compare les opérandes et renvoie soit true soit false.

Nous pouvons l’utiliser pour comparer les valeurs d’énumération. Voir l’exemple ci-dessous.

enum Color {
  red,
  green,
  yello,
  white,
  black,
  purple,
  blue;
}

public class SimpleTesting {
  public static void main(String[] args) {
    boolean result = isGreen(Color.blue);
    System.out.println(result);
    result = isGreen(Color.green);
    System.out.println(result);
  }

  public static boolean isGreen(Color color) {
    if (color == Color.green) {
      return true;
    }
    return false;
  }
}

Production :

false
true

Compare Enum en utilisant la méthode equals() en Java

La méthode Java equals() compare deux valeurs et renvoie une valeur booléenne, soit true soit false. Nous pouvons utiliser cette méthode pour comparer les valeurs enum.

Ici, nous avons utilisé l’énumération Color pour comparer ses valeurs. La première valeur renvoie false, mais elle renvoie true pour la seconde. Voir l’exemple ci-dessous.

enum Color {
  red,
  green,
  yello,
  white,
  black,
  purple,
  blue;
}

public class SimpleTesting {
  public static void main(String[] args) {
    boolean result = isGreen(Color.blue);
    System.out.println(result);
    result = isGreen(Color.green);
    System.out.println(result);
  }

  public static boolean isGreen(Color color) {
    if (color.equals(Color.green)) {
      return true;
    }
    return false;
  }
}

Production :

false
true

Comparer les valeurs d’énumération et gérer la sécurité null

En Java, le problème le plus problématique est la gestion des valeurs null. Cela s’applique également à la comparaison enum ; si nous utilisons la méthode equals() pour comparer les valeurs enum et que l’objet enum est null, il lève nullpointerexception. Voir l’exemple ci-dessous.

enum Color {
  red,
  green,
  yello,
  white,
  black,
  purple,
  blue;
}
public class SimpleTesting {
  public static void main(String[] args) {
    Color color = null;
    boolean result = isGreen(color);
    System.out.println(result);
    result = isGreen(Color.green);
    System.out.println(result);
  }
  public static boolean isGreen(Color color) {
    if (color.equals(Color.green)) {
      return true;
    }
    return false;
  }
}

Production :

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "javaexample.Color.equals(Object)" because "color" is null

Cependant, si nous travaillons avec l’opérateur == (égal) et comparons les valeurs/objets enum, cela ne lèvera pas l’exception nullpointerexception. Cela signifie que cet opérateur est null sûr et meilleur à utiliser que la méthode equals(). Voir l’exemple ci-dessous.

enum Color {
  red,
  green,
  yello,
  white,
  black,
  purple,
  blue;
}

public class SimpleTesting {
  public static void main(String[] args) {
    Color color = null;
    boolean result = isGreen(color);
    System.out.println(result);
    result = isGreen(Color.green);
    System.out.println(result);
  }

  public static boolean isGreen(Color color) {
    if (color == Color.green) {
      return true;
    }
    return false;
  }
}

Production :

false
true

Comparer deux valeurs d’énumération différentes en Java

Nous pouvons également comparer deux objets enum en utilisant la méthode equals(). Comme les deux objets sont différents, il renvoie false dans les deux cas. Voir l’exemple ci-dessous.

enum Color {
  red,
  green,
  yello,
  white,
  black,
  purple,
  blue;
}

enum MyColors {
  green,
  red,
  blue;
}

public class SimpleTesting {
  public static void main(String[] args) {
    boolean result = isGreen(Color.red);
    System.out.println(result);
    result = isGreen(Color.green);
    System.out.println(result);
  }

  public static boolean isGreen(Color color) {
    if (color.equals(MyColors.red)) {
      return true;
    }
    return false;
  }
}

Production :

false
false

Article connexe - Java Enum