Java 14 instanceof 的模式匹配
2020/3/22 8:01:19
本文主要是介绍Java 14 instanceof 的模式匹配,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 概述
本文是 Java 14 系列教程的其中一篇,本文主要讲述 InstanceOf 的模式匹配。
JEP 305 的核心目的是让创建对象更简单、简洁、可读性更强而且更加安全。
2. 传统的 instanceOf 操作
很多时候,我们需要检查对象的类型,然后根据类型去编写不同的逻辑。通常会使用 instanceof 进行判断,然后再对对象进行强制类型转换。
if (animal instanceof Cat) { Cat cat = (Cat) animal; cat.meow(); // other cat operations } else if (animal instanceof Dog) { Dog dog = (Dog) animal; dog.woof(); // other dog operations } // More conditional statements for different animals
在上述代码示例中,我们每种情况要通过 instanceof 判断 animal 的具体类型,然后强制类型转换声明为局部变量。然后根据具体的类型执行特定的函数。
这有很多缺点:
- 这么写非常单调乏味,需要检测类型然后强制类型转换。
- 每个if 都要出现三次类型名。
- 类型转换和变量声明可读性很差
- 重复声明类型名意味着很容易出错。可能导致未预料到的运行时错误。
- 每新增一个animal 类型就要修改这里的函数。
下面将介绍 Java 14 提供的改进特性。
3. Java 14 改进版的 instanceOf
Java 14 带来了新版的 instanceof 操作,将参数类型检查和绑局部变量类型合并到了一起。
if (animal instanceof Cat cat) { cat.meow(); } else if(animal instanceof Dog dog) { dog.woof(); }
首先在 if 代码块对 animal 的类型和 Cat 进行匹配。 先看 animal 变量是否为 Cat 类型的实例,如果是,强转为 Cat 类型,并赋值给 cat。
注意变量名 cat 并不是一个存在的变量,而是模式变量的声明。
变量 cat 和 dog 只有当模式匹配表达式的结果为 true 时才生效和赋值。如果你把变量在别的地方用,会出现编译错误。
正如上面讲到的, Java 14 版本的代码更易懂。通过这种方式可以减少大量的类型转换,可读性大大提高。
此外,这种类型的测试模式,在编写 equality (equals)函数时非常有用。
4. 结论
本篇简短的文章讲述了 Java 14 instanceof 进行模式匹配。使用 Java 内置语言特性帮助我们编写质量更高,可读性更强的代码。
一如既往,我们的完整代码可以在 GitHub 上获取到。
这篇关于Java 14 instanceof 的模式匹配的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南