無理しないでゆっくり休んでね!

【Java】Enum(列挙型)について解説

Javaには、固定された定数のセットを扱うために使用される特別なデータ型、Enum(列挙型)があります。

Enumを使うことで、コードの可読性や保守性が向上し、定数の管理が簡単になります。この記事では、Enumの基本的な使い方から応用的な使い方まで、初心者向けに解説します。

Enumとは?

Enum(列挙型)は、あらかじめ定義された固定の値(列挙子)を持つデータ型です。

主に以下のような用途で使用されます:

  • 状態や種類を表す定数の管理
  • 定数が持つ値やメソッドを追加したい場合

Enumは、enumキーワードを使用して定義します。

Enumの基本的な使い方

Enumの基本構文は以下の通りです。

enum Enum名 {
    定数1, 定数2, 定数3;
}

曜日を表すEnum

enum Day {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}

public class Main {
    public static void main(String[] args) {
        Day today = Day.FRIDAY;

        if (today == Day.FRIDAY) {
            System.out.println("今日は金曜日です!");
        }
    }
}

ポイント

  • Enumの定数はすべて大文字で記述するのが一般的です。
  • 定数同士の比較には==を使用します。

Enumの応用:メソッドや値の追加

Enumは、通常のクラスのようにフィールドやメソッドを持つことができます。

定数ごとに異なる値を持たせる

enum Day {
    MONDAY("月曜日"),
    TUESDAY("火曜日"),
    WEDNESDAY("水曜日"),
    THURSDAY("木曜日"),
    FRIDAY("金曜日"),
    SATURDAY("土曜日"),
    SUNDAY("日曜日");

    private final String japaneseName;

    // コンストラクタ
    Day(String japaneseName) {
        this.japaneseName = japaneseName;
    }

    // 値を取得するメソッド
    public String getJapaneseName() {
        return japaneseName;
    }
}

public class Main {
    public static void main(String[] args) {
        for (Day day : Day.values()) {
            System.out.println(day + ": " + day.getJapaneseName());
        }
    }
}

出力結果

MONDAY: 月曜日
TUESDAY: 火曜日
WEDNESDAY: 水曜日
THURSDAY: 木曜日
FRIDAY: 金曜日
SATURDAY: 土曜日
SUNDAY: 日曜日

ポイント

  • 各定数に固有の値(ここではjapaneseName)を持たせることができます。
  • values()メソッドを使用すると、すべてのEnum定数を取得できます。

Enumの便利な機能

定数の順序を取得: ordinal()

ordinal()メソッドを使用すると、Enum定数の定義順序(0から始まる)を取得できます。

Day day = Day.MONDAY;
System.out.println(day.ordinal());  // 出力: 0

文字列からEnum定数を取得: valueOf()

文字列をEnum定数に変換する場合、valueOf()メソッドを使用します。

Day day = Day.valueOf("FRIDAY");
System.out.println(day);  // 出力: FRIDAY

注意: 不正な文字列を渡すとIllegalArgumentExceptionが発生します。

Enumの実践例

ランチメニューを管理するEnum

enum LunchMenu {
    PASTA(850),
    CURRY(750),
    SALAD(650);

    private final int price;

    LunchMenu(int price) {
        this.price = price;
    }

    public int getPrice() {
        return price;
    }
}

public class Main {
    public static void main(String[] args) {
        for (LunchMenu menu : LunchMenu.values()) {
            System.out.println(menu + ": " + menu.getPrice() + "円");
        }
    }
}

出力結果

PASTA: 850円
CURRY: 750円
SALAD: 650円

Enumを使うメリット

コードの可読性向上: Enumを使用すると、定数がどのような意味を持つのかが一目でわかります。

安全性: 不正な値が使用される可能性を排除できます。

メンテナンス性: 定数を一元管理できるため、変更が容易です。

Enumを使うメリット

JavaのEnumは、固定された定数を効率的に管理し、コードの可読性と安全性を向上させるための強力なツールです。基本的な使い方だけでなく、値やメソッドを持たせることで、さらに柔軟に利用できます。特に、状態や種類を表す場面で効果的なので、ぜひ活用してみてください!

コメント

タイトルとURLをコピーしました