Language 中级

用简洁的 switch 类型模式替代 if-else instanceof 链。

✕ 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 中的模式匹配让您直接匹配类型,在单个 case 标签中组合类型检查、转换和绑定。

分享 𝕏 🦋 in