JEP 420:简化的 switch 表达式

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: Java 14 引入了 switch 表达式, Java 18 实现了 JEP 420以下是 switch 表达式

# JEP 420:简化的 switch 表达式


---


Java 14 引入了 `switch` 表达式, Java 18 实现了 `JEP 420`


以下是 `switch` 表达式


```Java  

int numLetters = switch (day) {

   case MONDAY, FRIDAY, SUNDAY -> 6;

   case TUESDAY                -> 7;

   case THURSDAY, SATURDAY     -> 8;

   case WEDNESDAY              -> 9;

   default                     -> 11;    

};

```


### 对比


之前

```Java

static String formatter(Object o) {

   String formatted = "unknown";

   if (o instanceof Integer i) {

       formatted = String.format("int %d", i);

   } else if (o instanceof Long l) {

       formatted = String.format("long %d", l);

   } else if (o instanceof Double d) {

       formatted = String.format("double %f", d);

   } else if (o instanceof String s) {

       formatted = String.format("String %s", s);

   }

   return formatted;

}

```


之后


```Java

static String formatterPatternSwitch(Object o) {

   return switch (o) {

       case Integer i -> String.format("int %d", i);

       case Long l    -> String.format("long %d", l);

       case Double d  -> String.format("double %f", d);

       case String s  -> String.format("String %s", s);

       default        -> o.toString();

   };

}

```


对于简短的 `switch` 逻辑,可以更加清晰的表达

相关文章
|
1月前
|
C++
C++语言中Switch语句循环和作用类型
C++语言中Switch语句循环和作用类型
14 0
|
1月前
|
JavaScript 前端开发 开发者
ABAP 740 中引入的 LET 表达式
ABAP 740 中引入的 LET 表达式
12 0
|
2月前
|
存储 算法 编译器
C++ 新特性 lamada表达式
C++ 新特性 lamada表达式
|
2月前
|
安全 Java 开发者
JDK 21中的Switch模式匹配:一种更强大且灵活的分支选择机制
本文深入探讨了JDK 21中引入的Switch模式匹配的新特性。这种新的模式匹配机制不仅简化了传统的switch语句,还引入了类型检查和模式匹配,使得代码更加简洁、易读且功能强大。本文将详细介绍Switch模式匹配的语法、使用场景以及与传统switch语句的区别,并通过示例代码展示其在实际开发中的应用。
|
4月前
C 语言中的 switch 语句和 while 循环详解
替代多重 if..else 语句,可以使用 switch 语句。switch 语句用于选择多个代码块中的一个来执行
45 0
|
9月前
循环结构流程控制(if,else,switch,for,do...while等等)(三)
循环结构流程控制(if,else,switch,for,do...while等等)(三)
61 0
|
9月前
循环结构流程控制(if,else,switch,for,do...while等等)(一)
循环结构流程控制(if,else,switch,for,do...while等等)(一)
39 0
|
9月前
循环结构流程控制(if,else,switch,for,do...while等等)(二)
循环结构流程控制(if,else,switch,for,do...while等等)(二)
45 0
|
11月前
|
存储 安全 编译器
GNU C 扩展语法:指定初始化与语句表达式
GNU C 扩展语法:指定初始化与语句表达式
169 0
|
Java API 索引
Java 编程问题:二、对象、不变性和`switch`表达式
Java 编程问题:二、对象、不变性和`switch`表达式
58 0

热门文章

最新文章

  • 1
    Serverless 应用引擎产品使用之在函数计算中,数据库访问失败如何解决
    6
  • 2
    Serverless 应用引擎产品使用之在阿里云函数计算中发现没有NAC(Native Application Component)选项,且无法自己上传MOD(模块)如何解决
    7
  • 3
    Serverless 应用引擎操作报错合集之在阿里云函数计算中,调用了FC函数但是没有执行或者报错,并且在FC函数后台也看不到调用记录日志如何解决
    7
  • 4
    Serverless 应用引擎操作报错合集之在阿里函数计算中,sd部署启动报错CAExited 报错信息“operation not permitted”如何解决
    5
  • 5
    Serverless 应用引擎操作报错合集之在阿里函数计算中,SD Controlnet Depth 运行过程中出现错误“urllib3 v2.0 only supports OpenSSL 1.1.1+”如何解决
    7
  • 6
    Serverless 应用引擎操作报错合集之在阿里云函数计算中,laravel zip包使用示例的start.sh脚本启动时出现错误代码如何解决
    7
  • 7
    Serverless 应用引擎操作报错合集之在阿里云函数计算中,服务器调用FC函数时出现 "[Errno -3] Temporary failure in name resolution)" 错误如何解决
    5
  • 8
    Serverless 应用引擎操作报错合集之在Serverless 应用引擎中,部署过程中遇到错误代码如何解决
    9
  • 9
    Serverless 应用引擎操作报错合集之在 Serverless 应用引擎中,遇到“没法通过 head 传递灰度标识”如何解决
    8
  • 10
    Serverless 应用引擎操作报错合集之在阿里函数计算中,函数执行超时,报错Function time out after如何解决
    12