Java で==または equals()メソッドを使用して Java 列挙型を比較する
-
Java で
==
演算子を使用して列挙型を比較する -
Java で
equals()
メソッドを使用して列挙型を比較する -
列挙値を比較して
null
の安全性を処理する - Java で 2つの異なる列挙値を比較する
このチュートリアルでは、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