在Java12之前,switch的语法如下:

switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;

default:
语句体n+1;
break;
}
从Java12开始,switch语句升级为更简洁的表达式语法,使用类似模式匹配的方法,保证只有一条路径被执行,并且不需要break语句。看我下边这段代码:
switch (choise) {
case 1->{
switch(random) {
case 1->System.out.println(“剪刀”+“PK”+“剪刀”+“平局”);
case 2->System.out.println(“剪刀”+“PK”+“石头”+“你输啦”);
default->System.out.println(“剪刀”+“PK”+“布”+“你赢啦”);
}这里
}
case 2->{
switch(random) {
case 1->System.out.println(“石头”+“PK”+“剪刀”+“你赢啦”);
case 2->System.out.println(“石头”+“PK”+“石头”+“平局”);
default->System.out.println(“石头”+“PK”+“布”+“你输啦”);
}这里
}
default->{
switch(random) {
case 1->System.out.println(“布”+“PK”+“剪刀”+“你输啦”);
case 2->System.out.println(“布”+“PK”+“石头”+“你赢啦”);
default->System.out.println(“布”+“PK”+“布”+“平局”);
}这里
}
}
我安装的eclipse版本是Version: 2020-03 (4.15.0),以上代码在其执行结果如下(此时choise=1,random=3)
剪刀PK布你赢啦
石头PK布你输啦
布PK布平局

很明显出现了穿透。当然,这样的穿透问题在控制台编译运行代码时是不会出现的。显然,这是Eclipse本身的bug。
目前解决方法是将每个嵌套的switch的default后边的语句体用花括号括起来或者在上边代码标注“这里”的地方加上“break;"或者“;”,即可解决。

Java12之switch升级语法在Eclipse中的穿透问题相关推荐

  1. Java归去来第3集:Eclipse中给动态模块升级

    一.前言 如果还不了解剧情,请返回第2集的剧情          Java归去来第2集:利用Eclipse创建Maven Web项目 二.开始升级动态模块 2.1:查看原来的版本 我们先来看看Ecli ...

  2. eclipse中ast_JavaParser中AST节点的观察者

    eclipse中ast 我们离JavaParser 3.0的第一个候选发布版本越来越近. 我们添加的最后一项功能是支持观察抽象语法树的所有节点的更改. 当我为此功能编写代码时,我收到了Danny va ...

  3. 【Python】windows下Eclipse中安装集成webpy框架

    再补充一篇小白博文,这篇文章主要讲述的是在Windows下,在eclipse中如何通过使用webpy框架进行python的web开发.很多文章都是在自己一次次的碰壁中又决定自己写一篇.像原来的MySQ ...

  4. Eclipse的使用(三)Eclipse中常用的插件汇总

    工欲善其事,必先利其器 .对于Java开发来说,Eclipse是我们最常用的IDE.而Eclipse相对其他IDE(如NetBeans)来说,最强大的就在于插件,因此,如果不好好的选择插件,那Ecli ...

  5. eclipse java 7_在Eclipse中编程Java 7

    我安装了JDK 7和Eclipse 3.6M6.然后,我将JRE 7添加为Eclipse中的新JRE执行环境,并将编译器的遵从性级别设置为Java7.我可以使用javacJDK 7随附的命令行通过命令 ...

  6. php 定义goto函数错误,goto语法在PHP中的使用教程

    前言 在C++.Java及很多语言中,都存在着一个神奇的语法,就是goto.顾名思义,它的使用是直接去到某个地方.从代码的角度来说,也就是直接跳转到指定的地方.PHP中也有这个功能,我们先来看看它是如 ...

  7. SVN工具的使用 和在Eclipse中安装GPD插件:(多步审批流,因此选择使用工作流(JBPM)来实现)...

    前言 重点解说SVN工具的还原版本号. 1.提交svn之前.要先更新文件.假设更新之后有版本号冲突的话.就线下解决掉冲突,在把该文件标记为已经解决冲突. 正文 使用SVN还原历史版本号 去除掉Ecli ...

  8. 在eclipse中使用svn

    作为一名程序员,svn是比较常用也必然会使用到的一个工具,它的全拼为Subversion,是一个开源的版本控制系统,可以对每次修改的文件和目录进行准确记录,以便在使用的时候及时提取.本文主要介绍如何在 ...

  9. Doxygen自动文档生成工具在Eclipse中的集成及使用举例

    你有为软件编写说明文档的苦恼吗?当别人甩给你一个庞大的系统,让你根据里面的代码注释理解后写出一份完整的开发文档,你会怎么办?一个个的看代码 然后耗时N天来写吗?这既是一份苦差事也极其耗时,有没有更好的 ...

  10. eclipse中可以导入其它工具编写的RobotFramework脚本吗?

    在Robotframework的官方网站中,提供了非常多的编辑RF的工具.比如Ride,eclipse,sublime,notepad++等. 网上查到的资料,大部分都是Ride这个编辑工具的使用.在 ...

最新文章

  1. 学习统计学要掌握哪些知识
  2. SpringBoot+Vue+Itext实现前端请求文件流的方式下载PDF
  3. 二十万字C/C++、嵌入式软开面试题全集宝典二
  4. 2018到2008,10年CVPR/NIPS/ECCV/ICML顶会精选论文+代码集合资源
  5. 开线程插数据_python笔记7-多线程之线程同步(锁lock)
  6. MFC多线程处理界面假死之红外图像数据获取和excel写入
  7. java this self_[原]Javasript 关于self(that) = this用法的理解
  8. LeetCode —— 897. 递增顺序查找树(Python)
  9. [脚本编程] 过云盾、D盾各种盾shell
  10. android 9.0打开wifi,Android9.0 SystemUI 屏蔽打开wifi时不显示4G图标的逻辑
  11. 51nod 1435 位数阶乘
  12. html下拉菜单的某个值被选定,使用JavaScript在下拉列表中获取选定的值?
  13. 使用yarn创建react项目报node_modules\core-js-pure: Command failed错误
  14. 使用frida获取微信EnMicroMsg.db 数据库密码
  15. 高等数学(第七版)同济大学 习题3-4 个人解答(前8题)
  16. EBSD测试常见的问题及解答(二)
  17. 机电一体化柔性生产线加工系统
  18. python中round(18.67、-1)_Python torch.round方法代码示例
  19. 数据库管理工具哪个好?强力推荐Navicat Premium 16 mac中文版
  20. 小程序如何cdn加速服务器,小程序游戏加速方案

热门文章

  1. win10绿联usb转串口_win10 usb转串口驱动-win10 usb转串口sb转驱动下载 PL2303 最新版 - 河东下载站...
  2. ong拼音汉字_拼音ong到底怎么读?
  3. nodejs实现定时任务
  4. 万圣节头像挂件微信小程序前端
  5. 使用Word制作签名电子版
  6. 分段衰减衰减系数_深度学习中的固定学习率衰减策略总结
  7. python设置excel表样式
  8. 捏着鼻子也要吃? 吃蔬菜几大误区盘点
  9. python二元一次方程组用鸡兔同笼的思路来写编程_应用二元一次方程组——鸡兔同笼 教学设计...
  10. 巨潮网怎么下载年报_如何下载A股上市公司EXCEL财务报表