java17新特性-模式匹配的Swith表达式(预览)

java17新特性-模式匹配的Swith表达式(预览)
jwangMap<String, Object> data = new HashMap<>(); |
上面这个场景里,Map中的Value值存在不同的类型,所以使用instanceof来判断取出的value是什么类型,然后根据不同类型来进行处理。那么,接下来继续思考一个问题,如果这个Map中的Value可能有这几种类型:String、Integer、Double,我们需要对不同类型分别做不同的处理,是不是处理结构要这样写
if (data.get("key") instanceof String s) { |
在面对这种场景的时候,Java 17对switch做了增强,然后我们就可以这样来写
switch (data.get("key1")) { |
关注点
- case条件中直接涵盖了类型的判断和类型的转换,这个功能类似与Java 16中对instanceof的增强
- 每个case的处理逻辑用Lambda语法来实现,可以免去break语句(这是JDK 14新特性:switch表达式增强引入的功能)
另外,要注意的是,对于switch表达式中模式匹配的功能,JDK 17中的实现还是preview版本,所以了解为主,目前还不推荐用于正式环境,不排除后续有进一步改进的可能



