今日のjavaおっかけ(20150602):列挙型 enum 1

目次とぶっつぶつテーマ

http://snoopopo.hatenablog.com/entry/2015/04/14/102732

今日のテーマ:列挙型 enum 1

java5から登場。

列挙型の基本

・列挙型の定義

public enum Week {
    SUN,MON,TUE,WED,THU,FRI,SAT;
}

・使うときは、クラス(列挙型)名.列挙子 の形になる.

if( week == Week.SUN ){}

知らないうちに持ってるメソッドvaluesとvalueOf(String)

・values

Arrays.asList(Signal.values()).stream()
    .forEach(signal -> System.out.println(signal));

結果

RED
GREEN
YELLOW

定義された列挙子を配列の形で取得できるっぽい

・valueOf

       Signal signal = Signal.valueOf("GREEN");

文字列から列挙子を取得できるようだ.

列挙子はそれぞれオブジェクトなので

コンストラクタを定義することができますし、メソッドも定義できます。

public enum Signal {
    RED("Red")
    ,GREEN("Green")
    ,YELLOW("Yellow")
    ,;

    String color = null;

    private Signal(String color){
        this.color = color;
    }

    public String getColorName(){
        return color;
    }
}

今のところの理解

列挙型はfinalでstatic…というのは、列挙型だけのことをいっていて、 列挙子それぞれが持つオブジェクトは変更可能ということだと思われる.

続く。