Language 上級

パターンマッチングがオブジェクトだけでなくプリミティブ型でも動作するようになった。

✕ 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 25でプレビュー(3回目のプレビュー、JEP 507)。--enable-previewが必要。

Java 25はパターンマッチングをプリミティブ型に拡張します。switchパターンにwhenガードと共にint、long、doubleなどを使用でき、ボクシングや手動の範囲チェックが不要になります。

共有 𝕏 🦋 in