Java12でプレビューとしてswitch式が入って、Java13で正式化できるよう作業が進んでいます。 そんな中、switch式を正式化するJEPのドラフトが出ていました。 JEP draft: Switch Expressions 追記 あっというまにドラフトではなくなっています JEP 354: Switch Expressions
プレビューとの違いはbreak
がハイフン付キーワードのbreak-with
になるという記述があります。
int result = switch (s) { case "Foo": break-with 1; case "Bar": break-with 2; default: System.out.println("Neither Foo nor Bar, hmmm..."); break-with 0; };
かなり違和感が・・・
そしてこれは、package-private
とかいろんなキーワードが現れる準備でもありそうです。
引き算と区別ができないんでは?という点について、ハイフン付キーワードは必ずキーワードとの組み合わせになるはずなので、もともと引き算とはみなせなかったので大丈夫です。
5/22追記: break-withじゃなくてyieldになるかも。JEPが変更されています。しかし議論が大盛り上がり中でどこに落ち着くかわからない状況。 switch式の値付きbreakはyieldになる? - きしだのHatena