Errors 初級

nullをswitchのケースとして直接処理する — 別のガードは不要。

✕ Java 8
// Must check before switch
if (status == null) {
    return "unknown";
}
return switch (status) {
    case ACTIVE  -> "active";
    case PAUSED  -> "paused";
    default      -> "other";
};
✓ Java 21+
return switch (status) {
    case null    -> "unknown";
    case ACTIVE  -> "active";
    case PAUSED  -> "paused";
    default      -> "other";
};
このコードに問題がありますか? お知らせください。
🎯

明示的

nullの処理がswitchの中で見えます。

🛡️

NPEなし

null値でswitchしてもNullPointerExceptionはスローされません。

📐

一体化

nullを含むすべてのケースが1つのswitch式にまとまります。

旧来のアプローチ
switch前のガード
モダンなアプローチ
case null
JDKバージョン
21
難易度
初級
switchでのnullケース
利用可能

JDK 21 LTS(2023年9月)以降、広く利用可能

パターンマッチングのswitchはnullをcaseラベルとしてマッチできます。switch前のnullチェックが不要になり、null処理が明示的になります。

共有 𝕏 🦋 in