Java で==または equals()メソッドを使用して Java 列挙型を比較する

Mohammad Irfan 2023年10月12日
  1. Java で == 演算子を使用して列挙型を比較す​​る
  2. Java で equals() メソッドを使用して列挙型を比較す​​る
  3. 列挙値を比較して null の安全性を処理する
  4. Java で 2つの異なる列挙値を比較する
Java で==または equals()メソッドを使用して Java 列挙型を比較する

このチュートリアルでは、Java の == 演算子または equals() メソッドを使用して Java 列挙型を比較す​​る方法を紹介します。

列挙型は、日、月、色などのデータセットを収集するために使用される定数のセットです。Java では、列挙型を作成するために、enum キーワードを使用してから、型の値を指定します。

この記事では、列挙値とオブジェクトを比較する方法について説明します。いくつかの例で理解しましょう。

Java で == 演算子を使用して列挙型を比較す​​る

==(等しい)演算子は、2つのオペランドを必要とする二項演算子です。オペランドを比較し、true または false のいずれかを返します。

これを使用して、列挙値を比較できます。以下の例を参照してください。

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() メソッドは 2つの値を比較し、true または false のブール値を返します。このメソッドを使用して、列挙値を比較できます。

ここでは、Color 列挙型を使用してその値を比較しました。最初の値は false を返しますが、2 番目の値は 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 で 2つの異なる列挙値を比較する

equals() メソッドを使用して、2つの列挙型オブジェクトを比較することもできます。両方のオブジェクトが異なるため、どちらの場合も 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