パターンにおけるプリミティブ型
パターンマッチングがオブジェクトだけでなくプリミティブ型でも動作するようになった。
コード比較
✕ Java 8
String classify(int code) {
if (code >= 200 && code < 300)
return "success";
else if (code >= 400 && code < 500)
return "client error";
else
return "other";
}
✓ Java 25 (Preview)
String classify(int code) {
return switch (code) {
case int c when c >= 200
&& c < 300 -> "success";
case int c when c >= 400
&& c < 500 -> "client error";
default -> "other";
};
}
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
ボクシング不要
プリミティブを直接マッチング — Integerラッパーは不要です。
パターンの一貫性
オブジェクトとプリミティブで同じパターン構文が使えます。
パフォーマンス向上
パターンマッチングにおけるオートボクシングのオーバーヘッドを回避できます。
旧来のアプローチ
手動の範囲チェック
モダンなアプローチ
プリミティブパターン
JDKバージョン
25
難易度
上級
JDKサポート
パターンにおけるプリミティブ型
プレビュー
JDK 25でプレビュー(3回目のプレビュー、JEP 507)。--enable-previewが必要。
仕組み
Java 25はパターンマッチングをプリミティブ型に拡張します。switchパターンにwhenガードと共にint、long、doubleなどを使用でき、ボクシングや手動の範囲チェックが不要になります。
関連ドキュメント