Java21新特性Record Patterns示例详解
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); }
是不是一下感受到这个新特性的强大了?
以上就是Java21新特性Record Patterns的详细内容,更多关于Java Record Patterns的资料请关注脚本之家其它相关文章!
相关文章
详解spring cloud使用Hystrix实现单个方法的fallback
本篇文章主要介绍了详解spring cloud-使用Hystrix实现单个方法的fallback,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-01-01spring boot实现超轻量级网关的方法(反向代理、转发)
这篇文章主要介绍了spring boot实现超轻量级网关(反向代理、转发)的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-11-11Springboot集成Kafka实现producer和consumer的示例代码
这篇文章主要介绍了Springboot集成Kafka实现producer和consumer的示例代码,详细的介绍了什么是Kafka和安装Kafka以及在springboot项目中集成kafka收发message,感兴趣的小伙伴们可以参考一下2018-05-05Java 使用POI生成带联动下拉框的excel表格实例代码
本文通过实例代码给大家分享Java 使用POI生成带联动下拉框的excel表格,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧2017-09-09
最新评论