JDK 14的新特性:instanceof模式匹配
JDK 14的新特性:instanceof模式匹配
JDK14在2020年的3月正式发布了。可惜的是正式特性只包含了最新的Switch表达式,而Records,patterns,text blocks仍然是预览特性。
本文要讲的就是JDK14的一个预览特性instanceof的pattern matching。 也就是说在instanceof中可以使用模式匹配了。
怎么理解呢?
我们先举个历史版本中使用instanceof的例子。
假如我们是动物园的管理员,动物园里面有Girraffe和Hippo两种动物。
@Data
public class Girraffe {private String name;
}
@Data
public class Hippo {private String name;
}
为了简单起见,上面两种动物我们都之定义一个name属性。
接下来我们要对两种动物进行管理,传入一个动物,判断一下这个动物是不是上面两种动物之一,按照传统的办法,我们应该这样做:
public void testZooOld(Object animal){if(animal instanceof Girraffe){Girraffe girraffe = (Girraffe) animal;log.info("girraffe name is {}",girraffe.getName());}else if(animal instanceof Hippo){Hippo hippo = (Hippo) animal;log.info("hippo name is {}",hippo.getName());}throw new IllegalArgumentException("对不起,该动物不是地球上的生物!");}
上面的代码中, 如果instanceof确认成功,我们还需要将对象进行转换,才能调用相应对象中的方法。
有了JDK 14,一切都变得容易了,我们看下最新的JDK 14的模式匹配怎么做:
public void testZooNew(Object animal){if(animal instanceof Girraffe girraffe){log.info("name is {}",girraffe.getName());}else if(animal instanceof Hippo hippo){log.info("name is {}",hippo.getName());}throw new IllegalArgumentException("对不起,该动物不是地球上的生物!");}
注意instanceof的用法,通过instanceof的模式匹配,就不需要二次转换了。直接使用就可以了。并且模式匹配的对象还被限定了作用域范围,会更加安全。
注意,如果你使用的最新版的IntelliJ IDEA 2020.1版本的话,语言编译版本一定要选择14(Preview),因为这个功能是preview的。
本文的例子https://github.com/ddean2009/learn-java-base-9-to-20
更多精彩内容且看:
- 区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新
- Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新
- Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新
- java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程
欢迎关注我的公众号:程序那些事,更多精彩等着您!
更多内容请访问 www.flydean.com
JDK 14的新特性:instanceof模式匹配相关推荐
- JDK 14的新特性:更加好用的NullPointerExceptions
JDK 14的新特性:更加好用的NullPointerExceptions 让99%的java程序员都头痛的异常就是NullPointerExceptions了.NullPointerExceptio ...
- JDK 14的新特性:switch表达式
文章目录 简介 写在前面 连写case switch返回值 yield 总结 简介 switch的新特性可是源远流长,早在JDK 12就以预览功能被引入了,最终在JDK 14成为了正式版本的功能:JE ...
- JDK 14的新特性:文本块Text Blocks
文章目录 举个例子 Indentation编排 Escaping转义 formatted格式化 总结 说起来,Text Blocks是在JDK13中以第一次预览版本引入的.现在在JDK14中是第二次预 ...
- eplan文本怎么换行_JDK 14的新特性:文本块Text Blocks
说起来,Text Blocks是在JDK13中以第一次预览版本引入的.现在在JDK14中是第二次预览版本 JEP 368: Text Blocks. 在我们日常的工作中,有时候需要用到一大段的字符串, ...
- Java 15 正式发布, 14 个新特性,刷新你的认知!!
JDK 15 2020/09/15 如期而至! 这个时间牛逼啊,和苹果发布会同天? OracleJDK 15 发布地址: https://www.oracle.com/java/technologie ...
- JDK各版本新特性(更新到Java20)
Hello,I'm Shendi 每当Java出新版本我会第一时间更新 目录 各版本JDK下载 JDK 1.0 1996-01-23 Oak(橡树) JDK 1.1 1997-02-19 JDK 1. ...
- java 新特性_Java 9的14个新特性总结
原标题:Java 9的14个新特性总结 作者 | Aboullaite Mohammed 翻译 |Kenneth Java 9 包含了丰富的特性集.虽然Java 9没有新的语言概念,但是有开发者感兴趣 ...
- JDK 5 ~ 10 新特性倾情整理
转载自 JDK 5 ~ 10 新特性倾情整理 最近连 JDK11都在准备发布的路上了,大家都整明白了吗?也许现在大部分人还在用6-8,8的新特性都没用熟,9刚出不久,10-11就不用说了. 为了大家对 ...
- 各个JDK版本的新特性
一.各个JDK版本的新特性 (1)JDK 5 : 1 . 自动装箱 2 . 泛型 3 . 动态注释 4 . 枚举 5 . 可变长参数 6 . 遍历循环 7 . 改进了 Java 的内存模型 8 . 提 ...
最新文章
- VirtualBox虚拟机开机后台自启动
- 企业网络推广时网站获取排名离不开企业网络推广文章内容的更新
- 批处理命令 For循环命令具体解释!
- 解体症状---被封印的灵魂
- 关于私有变量,静态私有变量
- 使用Redis实现分布式锁
- K8S+Docker理论与实践深度集成
- VMWare网络设置的3中方式
- python中sys模块有问题_python中sys模块之输入输出错误流
- OSX/Linux 配置SSH免密登录并配置(Alias)别名登录
- C语言 · 字符串输入输出函数
- struts2——快速入门
- SolidWorks二次开发经验总结
- 一文掌握机器学习算法工程师技术栈
- 新浪云mysql_php连接mysql数据库(新浪云SAE)
- CentOS防火墙配置(资源)
- APP创业经:比开发更难的是APP运营和推广
- plot函数--R语言
- 知道一个公司的网站地址,怎么快速获取邮箱。
- 17个你必须牢记的Win7快捷键