Java で列挙型をスイッチする

Rupam Yadav 2023年10月12日
  1. Java で伝統的な Switch と Case を使って enum を切り替える
  2. Java12 の拡張 switch と case を使用して列挙型をオンにする
Java で列挙型をスイッチする

この記事では、Java で列挙型で switch を使用する方法を説明します。enum で switch 文を使用する 2つの方法を見ていきます。

Java で伝統的な Switch と Case を使って enum を切り替える

この例では、SwitchEnum クラスの中に列挙型を作成して Days と名付けます。これには曜日を表す 7つの定数が格納されています。switch メソッドと case メソッドを使って、日ごとに異なるメッセージを表示します。

Days.MONDAY は定数 MONDAY を取得し、それを enum オブジェクト day に格納します。これを使ってケースを切り替えることができます。switch() は切り替えたい値、つまり day を取得します。最後に、各ケースとそれが出力すべき出力を指定します。

スイッチの実行が終了すると実行が中断されるように、ケースごとにブレークしなければならません。

public class SwitchEnum {
  enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

  public static void main(String[] args) {
    Days day = Days.MONDAY;

    switch (day) {
      case SUNDAY:
        System.out.println("Sundays are wonderful");
        break;

      case MONDAY:
        System.out.println("Mondays are boring");
        break;

      case TUESDAY:
        System.out.println("Tuesdays are OK");
        break;

      case WEDNESDAY:
        System.out.println("Wednesdays are tiring");
        break;

      case THURSDAY:
        System.out.println("Thursdays are even more boring");
        break;

      case FRIDAY:
        System.out.println("Fridays means work work and work");
        break;

      case SATURDAY:
        System.out.println("Saturdays makes everybody happy");
        break;
    }
  }
}

出力:

Mondays are boring

Java12 の拡張 switch と case を使用して列挙型をオンにする

Java 12 では、従来の switch 文と case 文の欠点を克服するために、強化された switch 文と case 文が導入されました。従来の switch 文の最大の欠点は、すべてのケースで break キーワードを指定しなければならないことです。

拡張スイッチとケースを使用することで、より短いコードで enum を使用することができるようになりました。新しいスイッチとケースでは、コロンの代わりに矢印を使用しています。1つの文だけを表示したいので、中括弧を使用する必要はありません。

public class SwitchEnum {
  enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }

  public static void main(String[] args) {
    Days day = Days.SATURDAY;

    switch (day) {
            case SUNDAY -> System.out.println("Sundays are wonderful");
            case MONDAY -> System.out.println("Mondays are boring");
            case TUESDAY -> System.out.println("Tuesdays are OK");
            case WEDNESDAY -> System.out.println("Wednesdays are tiring");
            case THURSDAY -> System.out.println("Thursdays are even more boring");
            case FRIDAY -> System.out.println("Fridays means work work and work");
            case SATURDAY -> System.out.println("Saturdays makes everybody happy");
        }

    }
}

出力:

Saturdays makes everybody happy
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java Switch

関連記事 - Java Enum