従来のスイッチ式の欠点:
- あなたが休憩を書くことを忘れてしまった場合、トップダウンのマッチング、case文の背面が一致するかどうかに関係なく実行されます。
- 全てのケースステートメントブロックの範囲を共有し、変数名は、上記で定義された別のケース文で繰り返すことができません。
- あなたは、複数の実行条件場合で一貫した結果を書き込むことはできません。
- 戻り値として式全体を切り替えることはできません。
Javaの12の新機能を切り替えます。
- 、Javaの12のスイッチ式で書かれた小さな休憩の結果に対して、break文をなくし使用して書き込みエラー。
- テーブルになる前に、より多くの場合は、1行にマージしますが、それは、単純で明確かつよりエレガントなプレゼンテーションロジックの支店で、文の具体的な文言は、ケースです。ケースL - >、それは、ある条件がケースL、右のラベルの実装を一致した場合サイドコード、コードセグメント右側にのみ発現、ブロック、又はthrow文をタグ付けしています。
- 互換性を維持するために、ケースの条件文はまだ文字を使用することができます:,その後、フォールスルーのルールは、元の省略することができない、まだ有効である
そうでない場合があるでしょう:>と- break文を、同じはスイッチの構造に混在させることはできませんコンパイルエラー。スイッチブロックとスイッチ構造全体ブロックの範囲ではなく、拡散を制限する、簡略化で定義されたローカル変数は、決意の条件に応じて変数を割り当てる必要はありません。
public class SwitchTest1 {
public static void main(String[] args) {
Week day = Week.FRIDAY;
switch (day) {
case MONDAY,FRIDAY, SUNDAY -> System.out.println(6);
case TUESDAY -> System.out.println(7);
case THURSDAY, SATURDAY -> System.out.println(8);
case WEDNESDAY -> System.out.println(9);
default -> throw new IllegalStateException("What day is today?" + day);
}
}
}
public class SwitchTest2 {
public static void main(String[] args) {
Week day = Week.FRIDAY;
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
default -> throw new IllegalStateException("What day is today?" + day);
};
}
}