サイトアイコン たーちゃんの「ゼロよりはいくらかましな」

【java】Enumに個別に値を持たせる

Enumといえば、列挙型と言われます。

列挙型はある変異のない特定の値群を指します。

例えば、性別といえば男と女しかないようなものですね。

 

/**
 * サンプルEnum.
 */
public enum SampleEnum {

    MEN,
    WORMEN;
}

 

性別の例だと、こんな感じに記載しますね。

ですが、これだとちょっと使いにくいこともありますね。

 

例えば、データベースに性別を持っていて、

男:1,女:2などのコード値と紐付いている場合、

このEnumをそのまま使おうとするとちょっと不便ですね。

 

ところが、このEnum、値をもたせて関連付けることができます。

どう書いたらよいでしょうか??

 

 

 

まずは見てみましょう

 

package jp.co.tarchan.enumaddsample;

import org.apache.commons.lang3.StringUtils;

/**
 * サンプルEnum.
 */
public enum SampleEnum {

    MEN("1"), 
    WOMEN("2");

    // この値がEnumのコード値になる
    private String code;

    // このコンストラクタを設定することで
    // コード値とEnumが紐付けられる
    private SampleEnum(String code) {
        this.code = code;
    }

    // このメソッドでEnumのコード値を取得する
    public String getCode() {
        return code;
    }

    /**
     * コード値からEnumを取得する.
     * @param code コード値
     * @return サンプルEnum
     */
    public SampleEnum getEnum(String code) {

        for (SampleEnum sampleEnum : SampleEnum.values()) {

            if (StringUtils.equals(sampleEnum.getCode(), code)) {
                return sampleEnum;
            }
        }

        return null;
    }
}

 

解説

まずはEnum定義の後ろに値をカッコ書きします。

これは文字列でも数値でも大丈夫です。

 

次にそのコード値を定義します。

private String code;

 

この部分ですね。

値が文字列なのでStringとなります。

 

 

その次。

Enumのコンストラクタです。

これがキモになります。

このコンストラクタでEnum定義と値が紐付けられるのです。

 

public String getCode()

ここではEnumに定義されたコードを取得するメソッドになります。

 

 

また今回はおまけで、

コード値を引数としてEnumを返すメソッドも記載しておきました。

これが意外に現場では登場する機会が多いので・・・。

 

 

まとめ

ということで、Enumに値をもたせる書き方でした。

値が持てると列挙型は意外に使うシーンが多いかと思いますので、

ぜひ使ってみてください。

それでは!

 


にほんブログ村


人気ブログランキング

モバイルバージョンを終了