深入剖析 Java 新特性
范学雷
Oracle 首席软件工程师,Java SE 安全组成员,OpenJDK 评审成员
1017 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
推荐试读
换一换
开篇词 | 拥抱Java新特性,像设计者一样工作和思考
免费
01 | JShell:怎么快速验证简单的小问题?
03 | 档案类:怎么精简地表达不可变数据?
课程目录
已更新 6 讲/共 20 讲
开篇词 (1讲)
开篇词 | 拥抱Java新特性,像设计者一样工作和思考
提升编码效率 (5讲)
01 | JShell:怎么快速验证简单的小问题?
02 | 文字块:怎么编写所见即所得的字符串?
03 | 档案类:怎么精简地表达不可变数据?
04 | 封闭类:怎么刹住失控的扩展性?
05 | 类型匹配:怎么切除臃肿的强制转换?
深入剖析 Java 新特性
15
15
1.0x
00:00/00:00
登录|注册

05 | 类型匹配:怎么切除臃肿的强制转换?

你好,我是范学雷。今天,我们聊一聊 Java 模式匹配,主要是类型匹配。
Java 的模式匹配是一个新型的、而且还在持续快速演进的领域。类型匹配是模式匹配的一个规范。类型匹配这个特性,首先在 JDK 14 中以预览版的形式发布。在 JDK 15 中,改进的类型匹配再次以预览版的形式发布。最后,类型匹配在 JDK 16 正式发布。
那么,什么是模式匹配,什么又是类型匹配呢?这就要说到模式的组成。通常,一个模式是匹配谓词和匹配变量的组合。其中,匹配谓词用来确定模式和目标是否匹配。在模式和目标匹配的情况下,匹配变量是从匹配目标里提取出来的一个或者多个变量。
对于类型匹配来说,匹配谓词用来指定模式的数据类型,而匹配变量就是一个属于该类型的数据变量。需要注意的是,对于类型匹配来说,匹配变量只有一个。
这样的描述还是太抽象,太难理解。我们还是通过案例和代码,一点一点地来理解类型匹配吧。

阅读案例

在程序员的日常工作中,一个重要的事情,就是把相似的东西抽象出来,设计成一个通用的、可以复用的接口。
比如说,我们从正方形、长方形、圆形这些看起来差异巨大的东西出发,抽象出了形状这个接口。我们希望使用一个实例时,如果我们不能确定它是正方形还是长方形,我们至少还能确定它是一个形状。这种模模糊糊的确定性(其实也是不确定性),其实对我们编写代码有巨大的帮助,包括但是不限于简化代码逻辑,减少代码错误。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
开篇词 | 拥抱Java新特性,像设计者一样工作和思考
免费
01 | JShell:怎么快速验证简单的小问题?
03 | 档案类:怎么精简地表达不可变数据?
04 | 封闭类:怎么刹住失控的扩展性?
05 | 类型匹配:怎么切除臃肿的强制转换?
该试读文章来自付费专栏《深入剖析 Java 新特性》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥59
立即订阅
登录 后留言

精选留言(2)

  • 码农Kevin亮
    请问老师这个性能测试是用什么工具与方法做的?
    2021-11-24
  • Clark
    与typescript在instanceof直接把类型确定了比,Java这个新语法还是不够优雅。
    typescript:
    if (a instanceof Rect) {
     a.area(); // a is Rect
    }
    是不是觉得ts这样挺优雅的
    2021-11-24
收起评论
2
返回
顶部