Java 14引入了pattern Matching for instanceof (另一种预览语言功能) ,从而消除了在使用instanceof时进行强制转换的需要。 例如,考虑以下代码:

 if (obj instanceof String) { String s = (String) obj; System.out.println(s.length());  } 

该代码现在可以重写为:

 if (obj instanceof String s) { System.out.println(s.length());  } 

如上所示, instanceof运算符现在使用“绑定变量”,并且不再需要强制转换为String 。 如果objString的实例,则将其强制转换为String并分配给绑定变量s 。 绑定变量仅在if语句的true块的范围内。

特别是,此功能使equals方法更加简洁,如下例所示:

 @Override  public boolean equals(Object obj) { return this == obj || (obj Person other) && other.name.equals(name); (obj instanceof Person other) && other.name.equals(name);  } 

此功能是模式匹配的一个示例,该模式已经在许多其他编程语言中提供,并且允许我们有条件地从对象中提取组件。 它为将来更广泛的模式匹配打开了大门,我对此感到非常兴奋!

翻译自: https://www.javacodegeeks.com/2020/04/java-14-pattern-matching-for-instanceof.html

Java 14:instanceof的模式匹配相关推荐

  1. java 8 新功能详解_Java 8和Java 14之间的新功能

    java 8 新功能详解 从版本9开始,Java每6个月就有一次新功能,因此很难跟踪这些新更改. 互联网上的大多数信息都描述了最近2个Java版本之间的变化. 但是,如果您的情况与我相似,则说明您使用 ...

  2. Java 8和Java 14之间的新功能

    从版本9开始,Java每6个月就会有新功能,因此很难跟踪这些新更改. 互联网上的大多数信息都描述了最近两个Java版本之间的变化. 但是,如果您的情况与我相似,则说明您使用的不是Java的最新版本,而 ...

  3. 你好,了解一下Java 14带来的一系列新功能

    Java 14带来的一系列新功能 Java 14包含比前两个发行版更多的新功能-其中大多数旨在简化编码. 劳尔·加布里埃尔·乌尔玛(Raoul-Gabriel Urma) 下载本文的PDF Java ...

  4. Java 14:JDK 14进入GA时的所有新功能

    是的,六个月过去了这么快,现在到了,Java 14的发布即将到来. 我们一直在跟踪新JDK在过去半年中的进展,您可以在此处找到摘要的所有功能. 但是,如果您想直接进入,可以在此处找到JDK 14二进制 ...

  5. JDK/Java 14 正式发布!然而我还在用 Java 8...

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | oschina 来源 | https://ww ...

  6. 甲骨文正式发布Java 14(Oracle JDK 14)

    甲骨文两年来,每六个月如约发布新版本的Java,Oracle JDK 14为开发人员带来创新功能和新特性预览.Oracle JDK 14增加了一些新特性来提高开发人员工作效率,这些新特性包括:对swi ...

  7. JDK 14 / JEP 305模式匹配“ Smart Casts”实例

    我通常将Java代码中instanceof运算符的存在视为" 红色标志 ",这意味着在某些情况下使用instanceof不一定是错误的,但是使用它有时表示可以以一种更干净的方式解决 ...

  8. Java 14的新功能

    2020年3月17日,Oracle发布了名为Java 14的Java新版本,其中包括许多新功能,工具,安全性,调试和更新的文档方面的改进. 但是,Oracle还向您提供Java的较旧版本,因为它具有向 ...

  9. 甲骨文Java 14来啦!

    甲骨文两年来,每六个月如约发布新版本的Java,Oracle JDK 14为开发人员带来创新功能和新特性预览.Oracle JDK 14增加了一些新特性来提高开发人员工作效率,这些新特性包括:对swi ...

最新文章

  1. 手机中的图片怎么压缩大小?
  2. 静态方法mock 和verify
  3. 横向循环焦点图片展示_多光子显微镜成像技术之十二:多光子显微镜中的焦点深度扩展方法...
  4. 学python找什么工作-学Python能找到什么工作?这4种工作最热门!
  5. 你真的了解过Lucene吗?
  6. 与你同行,才能无障碍
  7. zookeeper在Windows底下的安装和使用
  8. 用遗传算法求3维函数 的最小值_遗传算法可视化项目(4):遗传算法
  9. Windows VS Linux,Linux或将成为最终赢家?
  10. oracle 数据分列,如何使用Excel把有规律地txt文本数据分列
  11. 使电动机反转的matlab仿真图,基于MATLAB的电机仿真研究
  12. k8s service nodeport
  13. NAT类型与P2P游戏
  14. 打开Excel2010时提示错误:向程序发送命令时出现问题!
  15. 小米android6.01 root,小米 小米6(安卓8.0)获取Root权限服务含精简系统方案
  16. 动森服务器维护什么时候好,仙境传说RO爱如初见7月1日服务器停机维护
  17. 顺舟智能获中国电信智慧家庭产业联盟“智慧家庭创新合作奖”
  18. 惊闻杭州业主不满楼盘降价大闹售楼处
  19. 交互式电子沙盘GIS 虚拟数字沙盘M3D GIS教程
  20. jiffies:内核中的时间观念

热门文章

  1. USACO2.2【统计,dp,模拟,位运算】
  2. P1306-斐波那契公约数【矩阵乘法,数论】
  3. C++STL(set……)
  4. Codeforces Round #661 (Div. 3)
  5. Gym102059A Coloring Roads
  6. 12、oracle数据库下的存储过程和函数
  7. Spark Streaming之统计socket单词数
  8. 服务器性能指标(一)——负载(Load)分析及问题排查
  9. 单例模式——Java
  10. python中的数组按顺序切片_python切片(获取一个子列表(数组))详解