switch 文式で、String , int , enum 以外の判定で魅力的なのですが、
static String formatterPatternSwitch(Object o) { return switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); }; }
Java17 の これは、まだプレビュー機能なんだそうだ。どういうことかというと、
Oracle の説明でプレビュー機能は、
「プレビュー機能とは、設計、仕様および実装は完了しているが、
永続的でない新機能のことであり、将来のJDKリリースでは別の形式で存在するか、
完全になくなる可能性があることを意味します。」
とあるので、Eclipseのコンパイルが通常では通らない。
Java19 でもまだ、プレビューの状態なので、
JDK19 を使うようにして、Eclipse のプロジェクト毎の設定でようやく
「プレビュー機能を使用」にチェックを入れることができて、
やっとコンパイルも通り動くのだが、
不本意にも JRE19 で実行することになる。
Eclipseの設定は、コンパイルの設定で以下のようにする。
(2022-12 版の Pleades(Eclipse)では、以下のようにしないとダメだった)
このように
「Java19 のプレビュー機能を使用可能にする(P)」にチェックをつけて、
JRE の指定を JRE19 にしないとならない。