Java 13 都快要来了,12必须跟栈长学起!

Java 13 即将发布,新特性必须抢先看!

Java 12 中对 switch 的语法更友好了,建议大家看下栈长在Java技术栈微信公众号分享的《switch case 支持的 6 种数据类型!》,对理解 switch 更有帮助。

那么在 Java 12 中可以怎样玩 switch?

先来定义一个枚举类:

public enum Status {
OPEN, INIT, PROCESS, PENDING, CLOSE;
}

Java 12 之前是这样用的:

private static void testSwitch1(Status status) {
int result = 0;
switch (status) {
case OPEN:
result = 1;
break;
case PROCESS:
result = 2;
break;
case PENDING:
result = 2;
break;
case CLOSE:
result = 3;
break;
default:
throw new RuntimeException("状态不正确");
}
System.out.println("result is " + result);
}

Java 12 后可以这样用:

private static void testSwitch2(Status status) {
var result = switch (status) {
case OPEN -> 1;
case PROCESS, PENDING -> 2;
case CLOSE -> 3;
default -> throw new RuntimeException("状态不正确");
};
System.out.println("result is " + result);
}

示例代码看了都懂吧,是不是很骚?

Java 12 switch 有以下几点特色:

  • 箭头语法 ->,类似 Java 8 中的 Lambda 表达式;
  • 可以直接返回值给一个变量,并且可以不用 break 关键字;
  • case 条件,多个可以写在一行,用逗号分开;
  • 可以省略 break 关键字;

当然你也可以使用 break 关键字,后面跟值:

private static void testSwitch3(Status status) {
var result = switch (status) {
case OPEN -> {
break 1;
}
case PROCESS, PENDING -> {
break 2;
}
case CLOSE -> {
break 3;
}
default -> {
break 5;
}
};
System.out.println("result is " + result);
}

不推荐用这种,在编译器也会显示灰色,并提示你更改。

最后,这个新特性是 Java 12 预览版中的特性:JEP 325: Switch Expressions (Preview),要使用这个新特性,请切换至 Java 12 预览版。

参考 https://openjdk.java.net/jeps/325

好了,今天的分享就到这,收藏转发一下吧,多学习了解,日后必定有用!

历史 Java 新特性干货分享:



获取上面这份 Java 8~12 系列新特性干货文章,请在微信搜索关注微信公众号:Java技术栈,在公众号后台回复:java。

本文原创首发于微信公众号:Java技术栈(id:javastack),转载请原样保留本信息。

Java 12 骚操作, switch居然还能这样玩!的更多相关文章

  1. Java 12 骚操作, String居然还能这样玩!

    Java 13 都快要来了,12必须跟栈长学起! Java 13 即将发布,新特性必须抢先看! 栈长之前在Java技术栈微信公众号分享过<Java 11 已发布,String 还能这样玩!> ...

  2. Java 12 骚操作, 文件比对居然还能这样玩!

    Java 13 都快要来了,12必须跟栈长学起! Java 13 即将发布,新特性必须抢先看! 之前分享了一些 Java 12 的骚操作,今天继续,今天要分享的是 Java 12 中的文件比对骚操作. ...

  3. 打破你的认知!Java空指针居然还能这样玩,90%人不知道…

    相信在座的各位都遇到过空指针异常,不甚其烦,本文不是教你避免空指针,而是一些对空指针其他方面的理解. 本文可能有点另类,也可能会打破你对空指针的认知. 1.null.method() 空指针? 我们知 ...

  4. Java 11 已发布,String 还能这样玩!

    在文章<Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码>中,我有介绍到 Java 11 的八个新特性,其中关于 String 加强部分,我觉得有点意思,这里单独再拉出来 ...

  5. 简直骚操作,ThreadLocal还能当缓存用

    背景说明 有朋友问我一个关于接口优化的问题,他的优化点很清晰,由于接口中调用了内部很多的 service 去组成了一个完成的业务功能.每个 service 中的逻辑都是独立的,这样就导致了很多查询是重 ...

  6. switch多值匹配骚操作,带你涨姿势!

    我们都知道 switch 用来走流程分支,大多情况下用来匹配单个值,如下面的例子所示: /** * @from 微信公众号:Java技术栈 * @author 栈长 */ private static ...

  7. 一波骚操作,我把 SQL 执行效率提高了 10,000,000 倍!

    作者:风过无痕-唐 http://www.cnblogs.com/tangyanbo/p/4462734.html 场景 我用的数据库是mysql5.6,下面简单的介绍下场景 课程表: create  ...

  8. Java 12 新特性介绍,快来补一补

    Java 12 早在 2019 年 3 月 19 日发布,它不是一个长久支持(LTS)版本.在这之前我们已经介绍过其他版本的新特性,如果需要可以点击下面的链接进行阅读. Java 11 新特性介绍 J ...

  9. 尝鲜Java 12新特性:switch表达式

    Java 12将在两个月后(2019/3/19)发布,现已进入RDP1阶段,确定加入8个JEP.其中对Java语法的改进是JEP 325: switch表达式.于是我迫不及待,提前感受一下更先进的语言 ...

随机推荐

  1. 金融finaunce单词finaunce财经

    金融(FINANCE或FINAUNCE)就是对现有资源进行重新整合之后,实现价值和利润的等效流通.(专业的说法是:实行从储蓄到投资的过程,狭义的可以理解为金融是动态的货币经济学.) 金融是人们在不确定 ...

  2. Excel工作表密码保护的破解

    操作步骤:打开Visual Basic编辑器,单击“插入-->模块“,将以下代码粘贴到模块中即可. Sub DelPassword() ActiveSheet.Protect DrawingOb ...

  3. 子网掩码与ip地址的关系

    1.什么是ip地址 在网络中,所有的设备都会被分配一个地址.这个地址就相当于某条路上的XX号XX房.其中[号]对应的号码是分配了整个子网的,而[房]对应的号码是分配给子网中的计算机的,这就是网络中的地 ...

  4. 图说jdk1.8新特性(3)--- 注解与类型推测优化

    获取同一类型多个注解 ​ jdk1.8的java.lang.Class类新增了方法getAnnotationsByType方法,该方法可以获取某一个类型的注解列表,具体代码示例如下: public c ...

  5. Linux下的基本命令(不定期更新,欢迎指正错误、交流学习)

    ls 列出目录内容 -a //显示所有文件,包括隐藏文件 -i //显示详细信息 -d //显示目录属性 -h //人性化显示文件大小 -l //长格式显示,也可简写为 ll pwd 显示当前工作路径 ...

  6. 【异常(待解决)】org.apache.http.NoHttpResponseException: api.weixin.qq.com:443 failed to respond

    一.记录下异常堆栈信息 -- ::-exec-] ERROR weixin.popular.client.LocalHttpClient - execute error org.apache.http ...

  7. ffmpg常用命令解析

    1 相关学习官网地址 官网地址:https://www.ffmpeg.org 安装步骤:https://www.johnvansickle.com/ffmpeg/faq/ 2 涉及的常用命令 视频格式 ...

  8. 如何使用Mojave将APFS卷上的MacOS Catalina Beta安装到双引导

    如果你想与macOS Mojave或macOS High Sierra一起运行MacOS Catalina Beta,你可以通过向Mac添加一个新的APFS卷来实现这一点,如果该Macs硬盘被格式化为 ...

  9. 【HICP Gauss】数据库 数据库管理(连接方式 会话模式 存储表空间)-6

    数据库连接方式:驱动连接和客户端连接 驱动连接 : JDBC GSC ODBC 客户端连接 zsql工具 zsql / as sysdba -q #管理员身份登陆 zsql omm/ - #普通身份登 ...

  10. P3375 模板 KMP字符串匹配

    P3375 [模板]KMP字符串匹配 来一道模板题,直接上代码. #include <bits/stdc++.h> using namespace std; typedef long lo ...