4.8. switch ステートメントのパターンマッチング
Red Hat build of OpenJDK 21 では、switch
ステートメントのパターンマッチングによって Java プログラミング言語が強化されています。この機能拡張により、それぞれ特定のアクションを持つさまざまなパターンに対して switch
式をテストし、複雑なデータ指向クエリーを簡潔かつ安全に表現できるようになります。
オブジェクトのクラスに基づく switch
ステートメントを実装できます。
以下に例を示します。
switch (obj) { case Integer i -> String.format("int %d", i); case String s -> String.format("String %s", s); default -> obj.toString(); };
switch (obj) {
case Integer i -> String.format("int %d", i);
case String s -> String.format("String %s", s);
default -> obj.toString();
};
switch
ステートメントの case
ブロック内に when
ガードを入れ子にし、より複雑な switch
ステートメントを実装することもできます。
以下に例を示します。
switch (response) { case null -> { } case String s when s.equalsIgnoreCase("YES") -> { System.out.println("You got it"); } case String s when s.equalsIgnoreCase("NO") -> { System.out.println("Shame"); } case "n", "N" -> { System.out.println("Shame"); } case String s -> { System.out.println("Sorry?"); } }
switch (response) {
case null -> { }
case String s when s.equalsIgnoreCase("YES") -> {
System.out.println("You got it");
}
case String s when s.equalsIgnoreCase("NO") -> {
System.out.println("Shame");
}
case "n", "N" -> {
System.out.println("Shame");
}
case String s -> {
System.out.println("Sorry?");
}
}
アプリケーションで switch
ステートメントを使用する場合は、これらのステートメントが最新であることを確認してください。
詳細は、JEP 441: Pattern Matching for switch を参照してください。