JavaのEnumの比較方法を紹介します

java

switch文、if文で、Enumを比較する方法を紹介します。

Enumの比較方法は、intの比較に似た要領で比較できます。
Enumだからといって、特別な比較をする必要はありません。
ソースを見れば要領はすぐつかめると思います。

[スポンサーリンク]

この章でやること

switch文でEnumを比較する方法を紹介します。
if文でEnumを比較する方法を紹介します。

switch文でEnumを比較するプログラム

public class EnumComparedService {

    /**
     * Enumクラスです。
     *
     */
    private enum Result {
        Success,
        Error;
    }

    /**
     * switch文を使って、Enumの比較をしています。
     */
    public static void main(String arg[]) {
    	Result result = Result.Success;
    	
    	// switchのcaseへのEnum指定方法は、、
    	// Result.Successではなくて、
    	// Successのみの指定でOKです。
    	switch (result) {
		case Success:
			System.out.println("Successです。");
			break;
		case Error:
			System.out.println("Errorです。");
			break;
		default:
			System.out.println("Other!!");
			break;
    	}
    }
}

実行結果

>実行結果
Successです。

解説

22行目、25行目のcase句を見てください。
case句へEnumを指定しています。
「Result.Success」と指定するのではなく、「Success」と指定するのみでOKです。

if文でEnumを比較するプログラム

public class EnumComparedService {

    /**
     * Enumクラスです。
     *
     */
    private enum Result {
        Success,
        Error;
    }

    /**
     * if文を使って、Enumの比較をしています。
     */
    public static void main(String arg[]) {
    	Result result = Result.Success;
    	
    	if (result == Result.Success) {
    		System.out.println("Successです。");
    	} else if (result == Result.Error) {
    		System.out.println("Errorです。");
    	}
    }
}

実行結果

>実行結果
Successです。

解説1

if文でEnumを比較する際は、==で比較をします。

switch文の比較方法と異なる点があります。
if文の場合は、switch文とは違って、「Result.Success」と指定しなければいけません。

解説2

if文で比較する際、equalsを使うことも出来ます。
こちらの比較方法は、==で比較した結果と同じ結果となります。

    	if (result.equals(Result.Success)) {
    		System.out.println("Successです。");
    	}

これは余談です。
equalsで比較しても、Enumの内部では、==で比較しています。
どちらを使っても、比較は==で行われます。

public abstract class Enum<E extends Enum<E>>
  implements Comparable<E>, Serializable
{
・
・
・
  public final boolean equals(Object paramObject)
  {
    return (this == paramObject);
  }

最後に

冒頭でも言いましたが、Enumの比較は、intの比較に非常に似ています。
switch文の書き方は、シンプルであると同時に、Enumの良さを活用している感じが好きです。
それでは!