Javaその他

JavaのEnumを利用してみた

EnumはJavaの列挙型で、これを用いると、1つのEnumで複数の値をまとめて扱うことができる。Enum型をメソッドの引数に指定すると、指定できる値を、そのEnum型とnull値のみに制限することができるため、条件分岐文をシンプルにすることができる。

今回は、Enumを使用したサンプルプログラムを通して、Enumクラスの宣言方法と、Enumクラスの利用方法について共有する。

前提条件

下記記事のIntelliJ IDEA Community版をダウンロード済であること。

IntelliJ IDEAをインストールしてみた「IntelliJ IDEA(インテリジェイ アイディア)」という、Eclipseと同等の機能をもつJava用統合開発環境を使って、Sp...

また、下記のように、「demoJava」というJavaプロジェクトを作成済であること。
demoJavaプロジェクト

なお、IntelliJ IDEA上でJavaプロジェクトを作成する方法については、IntelliJ IDEA Community版をダウンロードする記事内の、「IntelliJ IDEA上でのJavaプロジェクトの作成・実行」を参照のこと。



Enumを利用したサンプルプログラムの作成と実行

今回作成したサンプルプログラムの構成は以下の通り。

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のサンプルプログラムの実行結果

要点まとめ

  • Enumは列挙型で、1つのEnumで複数の値をまとめて扱うことができる。
  • Enum型では、コンストラクタやメソッドをもたせることができる。
  • Enum型をメソッドの引数に指定すると、指定できる値を、そのEnum型とnull値のみに制限できる。