EnumはJavaの列挙型で、これを用いると、1つのEnumで複数の値をまとめて扱うことができる。Enum型をメソッドの引数に指定すると、指定できる値を、そのEnum型とnull値のみに制限することができるため、条件分岐文をシンプルにすることができる。
今回は、Enumを使用したサンプルプログラムを通して、Enumクラスの宣言方法と、Enumクラスの利用方法について共有する。
前提条件
下記記事のIntelliJ IDEA Community版をダウンロード済であること。
IntelliJ IDEAをインストールしてみた「IntelliJ IDEA(インテリジェイ アイディア)」という、Eclipseと同等の機能をもつJava用統合開発環境を使って、Sp...
また、下記のように、「demoJava」というJavaプロジェクトを作成済であること。

なお、IntelliJ IDEA上でJavaプロジェクトを作成する方法については、IntelliJ IDEA Community版をダウンロードする記事内の、「IntelliJ IDEA上でのJavaプロジェクトの作成・実行」を参照のこと。
Enumを利用したサンプルプログラムの作成と実行
今回作成したサンプルプログラムの構成は以下の通り。

「JpnRegion.java」でEnumの列挙型を定義し、「EnumSample.java」で「JpnRegion.java」を参照している。それぞれのプログラムの内容は以下の通り。
public enum JpnRegion {
/**
* 日本の地域Enum Enum値の列挙
* コンストラクタで指定した引数の指定が必要
*/
NORTH_JPN("北日本"),
EAST_JPN("東日本"),
WEST_JPN("西日本"),
OKINAWA_AMAMI("沖縄・奄美");
/**
* Enumのprivate変数
* ここにコンストラクタで指定した値を設定できる
* 複数のprivate変数も宣言できる
*/
private String jpText;
/**
* Enumのコンストラクタ
* public, protectedは指定できない
* 引数無や、複数の引数も指定できる
* @param jpText 日本語テキスト
*/
JpnRegion(String jpText){
this.jpText = jpText;
}
/**
* Enumの日本語テキストを取得する
* @return Enumの日本語テキスト
*/
public String getJpText(){
return this.jpText;
}
//その他、必要に応じて任意のメソッドを追加できる
}
public class EnumSample {
public static void main(String[] args){
System.out.println("*** checkEnum 引数がJpnRegion.NORTH_JPNの場合 ***");
checkEnum(JpnRegion.NORTH_JPN);
System.out.println();
System.out.println("*** checkEnum 引数がJpnRegion.EAST_JPNの場合 ***");
checkEnum(JpnRegion.EAST_JPN);
System.out.println();
System.out.println("*** checkEnum 引数がJpnRegion.WEST_JPNの場合 ***");
checkEnum(JpnRegion.WEST_JPN);
System.out.println();
System.out.println("*** checkEnum 引数がJpnRegion.OKINAWA_AMAMIの場合 ***");
checkEnum(JpnRegion.OKINAWA_AMAMI);
System.out.println();
System.out.println("*** checkEnum 引数がnullの場合 ***");
checkEnum(null);
System.out.println();
}
/**
* 引数の日本の地域Enumが正しく指定されているか判定する
* @param jpnRegionEnum 日本の地域Enum(nullか日本の地域Enumの値しか指定できない)
* @return 判定結果
*/
public static boolean checkEnum(JpnRegion jpnRegionEnum){
if(jpnRegionEnum == null){
System.out.println("異常: jpnRegionEnumがnullで不正");
return false;
}
System.out.println("正常: ");
System.out.println("取得した日本語テキスト: " + jpnRegionEnum.getJpText());
return true;
}
}
要点まとめ
- Enumは列挙型で、1つのEnumで複数の値をまとめて扱うことができる。
- Enum型では、コンストラクタやメソッドをもたせることができる。
- Enum型をメソッドの引数に指定すると、指定できる値を、そのEnum型とnull値のみに制限できる。






