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