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」を参照している。それぞれのプログラムの内容は以下の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 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; } //その他、必要に応じて任意のメソッドを追加できる } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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値のみに制限できる。