Switch Expressionsの概要
Switch Expressionsは、Switch文の新しい書き方で、Java 14で正式リリースされました。
Switch Expressionsを使うことで、コードをより簡潔に記述することができ、可読性が向上します。
Switch Expressionsの使い方
記述方法
Switch Expressionsの記述は、非常に簡単です。
Switch Expressionsは、従来のSwitch文のcaseに記述していた内容が、戻り値として返されるイメージになります。
それでは、従来のSwitch文と比較しつつ、Switch Expressionsの記述方法を確認します。
// 従来のSwitch文
System.out.println("-----従来のSwitch文-----");
int seasonOrg = 7;
switch (seasonOrg) {
case 1:
System.out.println("冬");
break;
case 2:
System.out.println("冬");
break;
case 3:
System.out.println("春");
break;
case 4:
System.out.println("春");
break;
case 5:
System.out.println("春");
break;
case 6:
System.out.println("夏");
break;
case 7:
System.out.println("夏");
break;
case 8:
System.out.println("夏");
break;
case 9:
System.out.println("秋");
break;
case 10:
System.out.println("秋");
break;
case 11:
System.out.println("秋");
break;
case 12:
System.out.println("冬");
break;
}
// Switch Expressions
System.out.println("-----Switch Expressions-----");
int seasonNew = 7;
String message = switch (seasonNew) {
case 3,4,5 -> "春";
case 6,7,8 -> "夏";
case 9,10,11 -> "秋";
case 12,1,2 -> "冬";
default -> throw new IllegalArgumentException("不正な月です。");
};
System.out.println(message);
出力結果は以下になります。
-----従来のSwitch文-----
夏
-----Switch Expressions-----
夏
上記のソースコードは、月に対して季節を表示するプログラムです。
従来のSwitch文と比べると、Switch Expressionsの方が簡潔で可読性の高いソースコードになっていることがわかります。
// Switch Expressions
case 3,4,5 -> "春";
case 6,7,8 -> "夏";
case 9,10,11 -> "秋";
case 12,1,2 -> "冬";
default -> throw new IllegalArgumentException("不正な月です。");
Switch Expressionsは、case文に複数の定数を指定することができます。
また、break文を必要せずにSwitch文を抜けること(フォールスルー)ができ、アロー演算子(->)の右側の値を返します。
この新しくなったSwitch文の記述方法によって、より短いソースコードでSwitch文を記載することができるようになりました。
その他:Switch Expressionsの記述例
yeildを使ったSwitch文
ソースコード
// yield 文を使った Switch Expressions
String results = switch (number) {
case 3,4,5:
yield "春";
case 6,7,8:
yield "夏";
case 9,10,11:
yield "秋";
case 12,1,2:
yield "冬";
default:
throw new IllegalArgumentException("不正な月です。");
};
System.out.println(results);
実行結果
秋
解説
「yield」を使うことで、明示的に値を返すことができます。
用途としては、return文に似ています。
yeildについて、もう一つ注意すべきことがあります。
case 3,4,5:
上記のように「case 定数:」と記述する場合、「break」または「yield」を記述しないとフォールスルーが発生します。
つまり、現在のcase文処理後に次のcase文に処理が移ります。
Switch Expressionsのおける「アロー演算子(->)」と「コロン(:)」で記述方法が異なることに注意して下さい。
まとめ
Switch Expressionsを使うことで、ソースコードを非常に簡潔に記述することができ、可読性も向上します。
私もSwitch Expressionsは今回の勉強で始めて知りました。
Switch文は仕事でも使用する機会が多いため、Javaのバージョンさえ問題なければ、使用したいところです。
今回の記事がためになった方、何かアドバイスを頂ける方は、是非コメントをよろしくお願いいたします。
ではまた次のブログでお会いしましょう!!
コメント