Compare Java Enum usando el método == o equals() en Java

Mohammad Irfan 12 octubre 2023
  1. Compare Enum usando el operador == en Java
  2. Compare Enum usando el método equals() en Java
  3. Compare los valores de Enum y maneje la seguridad null
  4. Comparar dos valores diferentes de enum en Java
Compare Java Enum usando el método == o equals() en Java

Este tutorial presenta cómo comparar Java usando el operador == o el método equals() en Java.

Enum es un conjunto de constantes que se utilizan para recopilar conjuntos de datos como día, mes, color, etc. En Java, para crear un enum, usamos la palabra clave enum y luego proporcionamos valores para el tipo.

Este artículo demostrará cómo comparar los valores de enum y los objetos. Vamos a entender con algunos ejemplos.

Compare Enum usando el operador == en Java

El operador == (igual) es un operador binario que requiere dos operandos. Compara los operandos y devuelve true o false.

Podemos usar esto para comparar valores de enumeración. Vea el ejemplo a continuación.

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;
  }
}

Producción :

false
true

Compare Enum usando el método equals() en Java

El método Java equals() compara dos valores y devuelve un valor booleano, ya sea true o false. Podemos usar este método para comparar valores de enumeración.

Aquí, usamos la enumeración Color para comparar sus valores. El primer valor devuelve false, pero devuelve true para el segundo. Vea el ejemplo a continuación.

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;
  }
}

Producción :

false
true

Compare los valores de Enum y maneje la seguridad null

En Java, el problema más problemático es el manejo de valores null. También se aplica a la comparación de enumeración; si usamos el método equals() para comparar valores de enumeración y el objeto de enumeración es null, arroja nullpointerexception. Vea el ejemplo a continuación.

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;
  }
}

Producción :

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

Sin embargo, si trabajamos con el operador == (igual) y comparamos valores/objetos de enumeración, no generará la nullpointerexception. Eso significa que este operador es null seguro y mejor de usar que el método equals(). Vea el ejemplo a continuación.

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;
  }
}

Producción :

false
true

Comparar dos valores diferentes de enum en Java

También podemos comparar dos objetos enum utilizando el método equals(). Dado que ambos objetos son diferentes, devuelve false en ambos casos. Vea el ejemplo a continuación.

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;
  }
}

Producción :

false
false

Artículo relacionado - Java Enum