Java 21 新特性:Record Patterns
Record Patterns 第一次发布预览是在JDK 19、随后又在JDK 20中进行了完善。现在,Java 21开始正式推出该特性优化。下面我们通过一个例子来理解这个新特性。
record Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = p.x(); int y = p.y(); System.out.println(x+y); } }
上述代码中定义了一个名为Point的record类(Java 16中的新特性),如果我们想要获取、操作或者打印Point中的x和y的话。就不得不先完成类型判断和类型转换。所以,这里为了实现x+y总共需要4行代码。而在Java 21之后,只需要2行代码就能完成:
static void printSum(Object obj) { if (obj instanceof Point(int x, int y)) { System.out.println(x+y); } }
可以看到,类型判断、类型转换、record值的结构都一气呵成了,所以代码量得到了简化。
嵌套record的解构
假设有下面一组嵌套的record结构(WindowFrame
中包含了Point
和Size
):
record Size(int width, int height) { } record Point(int x, int y) { } record WindowFrame(Point origin, Size size) { }
这个时候,如果想要访问WindowFrame
中Size
的height,根据之前案例的理解,我们可以这样写:
if (obj instanceof WindowFrame wf) { if (wf.size() != null) { System.out.println("Height: " + wf.size().height()); } }
好像也没有很简单,但实际上还有更简单的写法,因为record的解构是可以嵌套的,直接这样一步完成即可:
if (obj instanceof WindowFrame(Point origin, Size(int width, int height))) { System.out.println("Height: " + height); }
是不是一下感受到这个新特性的强大了?如果您学习过程中如遇困难?可以加入我们超高质量的技术交流群,参与交流与讨论,更好的学习与进步!另外,不要走开,关注我!持续更新Java新特性专栏!
欢迎关注我的公众号:程序猿DD。第一时间了解前沿行业消息、分享深度技术干货、获取优质学习资源

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
英伟达的AI霸主地位会持久吗?
目前英伟达因其 GPU 芯片在 AI 革命中扮演着核心角色,使其成为AI时代最赚钱的公司。 本文作者Pete Warden总结了铸就英伟达 AI 霸主地位的四点优势:几乎无人运行大规模机器学习应用;英伟达的替代品都很糟糕;研究人员掌握着硬件采购的风向舵;训练时延的影响。 随着 AI 技术的发展,Pete 预测,上述优势将逐渐发生变化:英伟达在整体 AI 市场中的份额占比将下降,虽然 AI 市场整体将大幅增长,英伟达的绝对销量会有所增长,但却难以继续维持目前的利润率。 Pete Warden 是智能传感器公司 Useful Sensor 的创始人,出版了《公共数据手册》和《大数据词汇表》,创建了 OpenHeatMap 和 Data Science Toolkit 等开源项目。 (以下内容由OneFlow编译发布,转载请联系授权。原文:https://petewarden.com/2023/09/10/why-nvidias-ai-supremacy-is-only-temporary/) 作者 | Pete Warden OneFlow编译 翻译|宛子琳、杨婷 英伟达(Nvidia)是...
- 下一篇
持续测试新范式:拨压测一体化
近日,在 TiD2023 质量竞争力大会上,来自阿里云云原生可观测团队的吴垚进行了《持续测试新范式:拨压测一体化》主题分享,本次分享包含三部分: 业务连续性对稳定性平台的需求 阿里稳定性平台的演进及趋势分析 拨压测一体化的概念及最佳实践 01 如何保证业务连续性 在正式开始今天的话题前,我们先来聊一聊业务连续性。随着信息技术的快速发展和广泛应用,以互联网和金融业为代表的业务创新和正常运转越来越依赖于信息系统的安全和稳定运行。如何保证信息系统所支持的关键业务功能在故障或灾难发生后能及时恢复和持续运作,以减少故障或灾难可能造成的损失,已成为技术建设和运行维护必须考虑的重点课题。 不管是行业企业还是政府机构,对灾难恢复和业务连续性建设一直都十分重视,出台多项规范和指定性意见,如金融行业的《信息安全技术信息系统灾难恢复规范》(GB/T 20988 – 2007)和《银行业信息系统灾难恢复管理规范》(JR/T0044-2008)等标准、规范。同时,业界有非常多关于业务连续性的模型指导企业落地连续性建设,其中最让人熟知的就是 6R 模型。6R 模型详细描述故障从产生到结束的完整生命周期。纵览模型的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启