在 Java 中使用 == 或 equals() 方法比较 Java 枚举

Mohammad Irfan 2023年10月12日
  1. 在 Java 中使用 == 运算符比较枚举
  2. 在 Java 中使用 equals() 方法比较枚举值
  3. 比较枚举值并处理 null 安全性
  4. 在 Java 中比较两个不同的枚举值
在 Java 中使用 == 或 equals() 方法比较 Java 枚举

本教程介绍如何使用 Java 中的 == 运算符或 equals() 方法比较 Java 枚举。

枚举是一组常量,用于收集日、月、颜色等数据集。在 Java 中,要创建枚举,我们使用 enum 关键字,然后为类型提供值。

本文将演示如何比较枚举值和对象。让我们通过一些例子来理解。

在 Java 中使用 == 运算符比较枚举

==(等于)运算符是需要两个操作数的二元运算符。它比较操作数并返回 truefalse

我们可以使用它来比较枚举值。请参见下面的示例。

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

输出:

false
true

在 Java 中使用 equals() 方法比较枚举值

Java equals() 方法比较两个值并返回一个布尔值,truefalse。我们可以使用这种方法来比较枚举值。

在这里,我们使用 Color 枚举来比较它的值。第一个值返回 false,但第二个返回 true。请参见下面的示例。

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

输出:

false
true

比较枚举值并处理 null 安全性

在 Java 中,最成问题的问题是处理 null 值。它也适用于枚举比较;如果我们使用 equals() 方法比较枚举值并且枚举对象是 null,它会抛出 nullpointerexception。请参见下面的示例。

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

输出:

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

但是,如果我们使用 ==(等于)运算符并比较枚举值/对象,它不会抛出 nullpointerexception。这意味着该运算符是 null 安全的,并且比 equals() 方法更易于使用。请参见下面的示例。

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

输出:

false
true

在 Java 中比较两个不同的枚举值

我们还可以使用 equals() 方法比较两个枚举对象。由于两个对象不同,因此在两种情况下都返回 false。请参见下面的示例。

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

输出:

false
false

相关文章 - Java Enum