switchでのnullケース
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
難易度
初級
JDKサポート
switchでのnullケース
利用可能
JDK 21 LTS(2023年9月)以降、広く利用可能
仕組み
パターンマッチングのswitchはnullをcaseラベルとしてマッチできます。switch前のnullチェックが不要になり、null処理が明示的になります。
関連ドキュメント