コンテンツにスキップ

Java列挙型

enumとは

enum(列挙型)とは、定数の集合のことです。 カテゴリやトランプのマークなどあらかじめ数が決まっている何パターンかを表したい場合に用います。

構文

enum 列挙型名 {
    列挙子,列挙子,列挙子;
}

例:商品を分類するカテゴリ

enum Category {
    FRUITS,BOOK,DRINK;
}

enumの使用

enumはその名前の型の変数があるかのように使います。 値は 型名.列挙子 しか入れることは出来ません。

Category type;

type = Category.FRUITS;

存在しない列挙子を使うとエラーになります。

type = Category.CD; // エラー

enumの判定

enumは if文などでは以下のように判定します。

if( type == Category.FRUITS){
    System.out.println("果物です");
}

switch文の特例

ただしswitch文のcaseでは型名を省略して書きます。

switch( type ){
case FRUITS:
    System.out.println("果物です");
    break;
case BOOK:
    System.out.println("本です");
    break;
case DRINK:
    System.out.println("飲み物です");
    break;
}

画面の表示(文字列化)

列挙子をそのまま画面に表示すると列挙子が文字列として表示されます。

Category type;
type = Category.FRUITS;

System.out.println(type); // FRUITS と表示

この表示を変えるにはenum内でtoStringを作ります。 このとき name() と書くことで列挙子を文字列で参照できます。

enum Category {
    FRUITS,BOOK,DRINK;

    public String toString(){
        return "種類:" + name();
    }
}
System.out.println(type); // 種類:FRUITS と表示

値の割り当て

各列挙子に値を割り当てることが出来ます。列挙子の宣言時に 列挙子(値) のように書きます。このとき、値はそのenumのコンストラクタで受け取ります。受け取った値をフィールドに格納し、getterなどで参照できるようにします。

enum Category {
    FRUITS(1), BOOK(2), DRINK(3);

    private int num;
    private Category(int n){
        num = n;
    }

    public int getNum(){
        return num;
    }
}

これを利用する場合、通常のクラスでメソッドを利用する場合と同様に使用できます。

Category type;
type = Category.FRUITS;

System.out.println( type.getNum() ); // 1と表示