导读:本期聚焦于小伙伴创作的《如何在 Java 中通过 switch 表达式在 Java 12 以后利用 yield 关键字直接返回分支结果》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在 Java 中通过 switch 表达式在 Java 12 以后利用 yield 关键字直接返回分支结果》有用,将其分享出去将是对创作者最好的鼓励。

Java 12 对 switch 语法进行了重大升级,推出了 switch 表达式,允许 switch 结构直接作为表达式返回值,而 yield 关键字就是用来在 switch 表达式的分支中返回结果的核心语法,替代了传统 switch 语句中需要提前定义变量再赋值的方式。

如何在 Java 中通过 switch 表达式在 Java 12 以后利用 yield 关键字直接返回分支结果

yield 关键字的基本使用规则

yield 关键字只能在 switch 表达式的分支中使用,作用是返回当前分支的计算结果,并且每个分支都必须通过 yield 返回一个值,或者分支本身是一个抛出异常的语句,否则会编译报错。

传统 switch 语句如果需要返回结果,通常需要先定义一个变量,在分支中给变量赋值,最后返回变量,而使用 yield 可以直接在分支中返回结果,代码结构更紧凑。

基础使用示例

下面是一个根据星期几返回对应描述的简单示例,对比传统写法和新特性的写法:

// 传统 switch 语句写法
public static String getDayDescTraditional(int day) {
    String desc;
    switch (day) {
        case 1:
            desc = "星期一";
            break;
        case 2:
            desc = "星期二";
            break;
        case 3:
            desc = "星期三";
            break;
        default:
            desc = "未知日期";
    }
    return desc;
}

// 使用 switch 表达式 + yield 的写法
public static String getDayDescNew(int day) {
    return switch (day) {
        case 1:
            yield "星期一";
        case 2:
            yield "星期二";
        case 3:
            yield "星期三";
        default:
            yield "未知日期";
    };
}

yield 使用的注意事项

  • yield 后面必须跟一个表达式,该表达式的值就是当前分支的返回结果,类型需要和 switch 表达式的整体返回类型一致。
  • 如果 switch 表达式的分支中包含了复杂的逻辑,需要先执行多行代码再返回结果,也可以使用 yield,此时分支需要用大括号包裹。
  • yield 只能在 switch 表达式中生效,传统 switch 语句中使用 yield 会编译报错,不要混淆两者的使用场景。
  • 如果分支中抛出了异常,就不需要使用 yield 返回结果,因为异常会中断流程,不会走到返回值这一步。

多行逻辑的分支示例

当分支需要执行多行代码再返回结果时,需要用大括号包裹分支逻辑,再使用 yield 返回:

public static int calculate(int type, int a, int b) {
    return switch (type) {
        case 1 -> a + b; // 箭头语法可以省略 yield,直接返回结果
        case 2 -> a - b;
        case 3 -> {
            // 多行逻辑处理
            int temp = a * b;
            int result = temp / 2;
            yield result; // 多行逻辑需要用大括号包裹,显式使用 yield 返回
        }
        default -> {
            throw new IllegalArgumentException("不支持的计算类型");
        }
    };
}

switch 表达式中箭头语法与 yield 的关系

Java 12 的 switch 表达式同时支持两种分支语法,一种是传统的 case 标签加冒号,这种语法下必须使用 yield 返回结果;另一种是箭头语法(case 标签加箭头),这种语法下可以直接在箭头后面跟返回值,不需要写 yield,编译器会自动处理返回逻辑。

两种语法的返回效果是一致的,开发者可以根据分支逻辑的复杂程度选择使用,逻辑简单时用箭头语法更简洁,逻辑复杂时用传统冒号语法加 yield 更清晰。

两种语法对比示例

// 箭头语法,无需 yield
String desc1 = switch (day) {
    case 1 -> "星期一";
    case 2 -> "星期二";
    default -> "其他";
};

// 冒号语法,必须用 yield
String desc2 = switch (day) {
    case 1:
        yield "星期一";
    case 2:
        yield "星期二";
    default:
        yield "其他";
};
注意:yield 关键字是 Java 12 新增的受限关键字,只有在 switch 表达式的上下文中才会被识别为关键字,在其他场景下仍然可以作为变量名使用,不过为了避免混淆,不建议在非 switch 表达式场景使用 yield 作为标识符。

Javayield_关键字switch_表达式分支返回修改时间:2026-06-26 18:18:38

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。