Language 中級

if-elseのinstanceof連鎖をすっきりしたswitchの型パターンで置き換える。

✕ Java 8
String format(Object obj) {
    if (obj instanceof Integer i)
        return "int: " + i;
    else if (obj instanceof Double d)
        return "double: " + d;
    else if (obj instanceof String s)
        return "str: " + s;
    return "unknown";
}
✓ Java 21+
String format(Object obj) {
    return switch (obj) {
        case Integer i -> "int: " + i;
        case Double d  -> "double: " + d;
        case String s  -> "str: " + s;
        default        -> "unknown";
    };
}
このコードに問題がありますか? お知らせください。
🏗

構造化されたディスパッチ

switchにより分岐構造が明示的で見やすくなります。

式形式

値を直接返せます — 可変変数は不要です。

網羅性

コンパイラがすべての型が処理されているか確認します。

旧来のアプローチ
if-elseの連鎖
モダンなアプローチ
型パターン
JDKバージョン
21
難易度
中級
switchのパターンマッチング
利用可能

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

switchのパターンマッチングにより、型に直接マッチングでき、型テスト、キャスト、バインディングを1つの簡潔なcaseラベルにまとめられます。コンパイラが網羅性を検証します。

共有 𝕏 🦋 in