jdk17新特性—— instanceof的模式匹配

目录

    • 一、instanceof模式匹配的概述
    • 二、instanceof模式匹配代码示例
      • 2.1、jdk17之前 instanceof用法 代码示例
      • 2.2、jdk17及之后 instanceof用法 代码示例一
      • 2.3、jdk17及之后 instanceof用法 代码示例二

一、instanceof模式匹配的概述

  • instanceof增加了模式匹配功能,如果变量类型经过instanceo判断能够匹配目标类型,则对应分支中无需再做类型强转。
  • 该特性由
    JDK14的JEP 305: Pattern Matching for instanceof (Preview)引入;
    JDK15的JEP 375: PatternMatching for instanceof (Second Preview)进行了第二轮预览; JDK16的JEP 394: Pattern Matching for instanceof中转正。

二、instanceof模式匹配代码示例

2.1、jdk17之前 instanceof用法 代码示例

  • jdk17之前 在instanceof语句判断后的分支里需要强转示例

    package com.xz.jdk17.day1;/*** @Author: xz* @Date: 2024-01-30* @Description: jdk17之前instanceof 用法*        在instanceof语句判断后的分支里需要强转*/
    public class Test1 {public static void main(String[] args) {String str="hello java";Object o = str;if (o instanceof Integer) {Integer i = (Integer) o;System.out.println(i.intValue());} else if (o instanceof String) {String s = (String) o;System.out.println(s);}}
    }
    
  • 输出结果
    在这里插入图片描述

2.2、jdk17及之后 instanceof用法 代码示例一

  • jdk17及之后 在instanceof语句直接定义转换类型后的变量名示例

    package com.xz.jdk17.day1;/*** @Author: xz* @Date: 2024-01-30 19:30* @Description: jdk17及之后 instanceof 用法*  在instanceof语句直接定义转换类型后的变量名*/
    public class Test2 {public static void main(String[] args) {String str="hello java";Object o = str;if(o instanceof Integer i){System.out.println(i.intValue());}else if(o instanceof String s){System.out.println(s);}}
    }
  • 输出结果

    在这里插入图片描述

2.3、jdk17及之后 instanceof用法 代码示例二

  • jdk17及之后 在instanceof语句后直接拼其他条件示例

    package com.xz.jdk17.day1;/*** @Author: xz* @Date: 2024-01-30 19:32* @Description: jdk17及之后 instanceof 用法*         在instanceof语句后直接拼其他条件*/
    public class Test3 {public static void main(String[] args) {String str="hello java";Object o = str;if(o instanceof Integer i && i >10){System.out.println(i.intValue());}else if(o instanceof String s && s.startsWith("h")){System.out.println(s);}}
    }
  • 输出结果
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/442047.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宠物处方单子怎么开,宠物门诊处方管理软件教程

宠物处方单子怎么开,宠物门诊处方管理软件教程 一、前言 宠物店电子处方软件操作教程以 佳易王宠物店电子处方管理系统V16.0为例说明。 如图,在开处方的时候,点击导航栏菜单,兽医处方按钮 点击 增加新单,填写宠物及…

win11 系统 WSL2 备份与还原

win11 系统想要使用 linu 开发环境,除了虚拟机,就是 wsl 好使了。 但是 wsl 如过用了一段时间里面环境工程配置迁移麻烦如果重装系统后能直接备份还原就方便了。 确定你的版本 使用 WinR 打开输入框 输入 cmd 命令 打开命令提示符界面 wsl -l -v查看…

UE4 C++ 枚举类型

先在UCLASS()前写入: //定义枚举变量 UENUM(BlueprintType) //BlueprintType:在蓝图中可显示、创建该枚举变量 namespace MyEnumType //namespace:命名空间,支持同样的变量命令、便于访问//MyEnumType:变量类型 {enum…

Unity-WebGL

问题:提示gzip压缩报错解决:关闭打包的地方压缩,如下图问题:窗口未全屏解决:使用百分比画布替换固定尺寸画布 参考:新版Unity打包Webgl端进行屏幕自适应_unity webgl分辨率自适应-CSDN博客问题:…

泰迪智能科技生成式人工智能(AIGC)实验室解决方案

AIGC(Artificial Intelligence Generated Content,生成式人工智能)是一种新的人工智能技术,指的是利用人工智能技术来生成内容。这种技术可以自动生成文本、图像、音频和视频等多种类型的内容,而且内容的质量较高&…

ubuntu 22安装配置并好安全加固后,普通用户一直登录不上

现象 ubuntu 22安装配置并好安全加固后,普通用户一直登录不上 排查报错 查看日志/var/log/auth.log发现报错 Jan 30 15:49:57 aiv-O-E-M sshd[62570]: PAM unable to dlopen(pam_tally2.so): /lib/security/pam_tally2.so: cannot open shared object file: No …

微信公众号数量达到上限怎么办

一般可以申请多少个公众号?许多用户在申请公众号时可能会遇到“公众号显示主体已达上限”的问题。这是因为在2018年11月16日对公众号申请数量进行了调整,具体调整如下:1、个人主体申请公众号数量上限从2个调整为1个。2、企业主体申请公众号数…

高精度加法模板,包装结构体

本题链接:用户登录 题目: 样例: 输入 123 456 输出 579 模板结构体: struct BigInt {string values;inline BigInt Add(const BigInt &ta,const BigInt &tb){BigInt ans;ans.values "";string sa ta.values…

汽车燃油泵数据分析:全球市场的年复合增长率将达到10%左右

燃油泵是汽车配件行业的专业术语。是电喷汽车燃油喷射系统的基本组成之一,位于车辆油箱内部,燃油泵在启动和发动机运转时工作,如果发动机停止而点火开关仍处于ON时,HFM-SFI控制模块关闭燃油泵的电源,以避免意外点火。 …

CHS_04.2.3.3+互斥锁

CHS_04.2.3.3互斥锁 进程互斥:锁 接下来 用于实现互斥的一种方法 你可以简单理解为 锁就是一个bool的变量 进程互斥:锁 只有true和false或者零和一两种状态分别表示当前已上锁或者没有上锁 有这样的两个函数可以操作锁acquire 这个函数就是上锁获得 锁…

WPF应用程序(.Net Framework 4.8) 国际化

1、新建两个资源字典文件zh-CN.xaml和en-US.xaml&#xff0c;分别存储中文模板和英文模板 (1) zh-CN.xaml <ResourceDictionary xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml&q…

【乳腺肿瘤诊断分类及预测】基于LVQNN学习向量量化神经网络

课题名称&#xff1a;基于LVQ神经网络的乳腺肿瘤诊断&#xff08;类型分类&#xff09; 版本日期&#xff1a;2023-03-10 运行方式: 直接运行0501_LVQ0501.m 文件即可 代码获取方式&#xff1a;私信博主或QQ&#xff1a;491052175 模型描述&#xff1a; 威斯康辛大学医学院…