当前位置: 首页 > news >正文

Java 新特性 - Java 文本块、Record 类、instanceof 模式匹配、Switch 表达式增强

一、Java 文本块(Java 15 正式)

1、基本介绍
  • 文本块适用于多行字符串
2、演示
Stringjson=""" { "name": "Tom", "age": 27 } """;System.out.println(json);
# 输出结果 { "name": "Tom", "age": 27 }

二、Record 类(Java 16 正式)

1、基本介绍
  • 自动生成构造器、getter 方法、equals 方法、hashCode 方法、toString 方法
2、演示
(1)Record
  • Person.java
publicrecordPerson(Stringname,intage,Stringemail){// 添加紧凑构造器做参数校验publicPerson{if(age<0){thrownewIllegalArgumentException("年龄不能为负数");}if(email==null||!email.contains("@")){thrownewIllegalArgumentException("邮箱格式无效");}}publicStringgetGreeting(){return"Hello, "+name;}}
(2)Test
Personp=newPerson("李四",25,"lisi@example.com");System.out.println(p);System.out.println(p.name());System.out.println(p.age());System.out.println(p.getGreeting());
# 输出结果 Person[name=李四, age=25, email=lisi@example.com] 李四 25 Hello, 李四
Personp1=newPerson("李四",25,"lisi@example.com");Personp2=newPerson("李四",25,"lisi@example.com");System.out.println(p1.equals(p2));
# 输出结果 true
Personp=newPerson("李四",-25,"lisi@example.com");
# 输出结果 Exception in thread "main" java.lang.IllegalArgumentException: 年龄不能为负数
Personp=newPerson("李四",25,"lisiexample.com");
# 输出结果 Exception in thread "main" java.lang.IllegalArgumentException: 邮箱格式无效

三、instanceof 模式匹配(Java 16 正式)

1、基本介绍
  • 类型判断后直接赋值,省去强制转换
2、演示
  1. 旧写法,需要显式强转
Objectobj="Hello Java";if(objinstanceofString){Strings=(String)obj;System.out.println(s.length());}
# 输出结果 10
  1. 新模式匹配,同时完成判断和赋值,可以直接使用
Objectobj="Hello Java";if(objinstanceofStrings){System.out.println(s.length());}
# 输出结果 10
  1. 还可以配合&&使用,但不能配合||使用
Objectobj="Hello Java";if(objinstanceofStrings&&s.length()>5){System.out.println("字符串长度大于 5: "+s);}
# 输出结果 字符串长度大于 5: Hello Java
  1. 对集合中的元素使用
List<Object>list=List.of("Java",123,"Record");for(Objectitem:list){if(iteminstanceofStringstr){System.out.println("字符串: "+str);}elseif(iteminstanceofIntegernum){System.out.println("数字: "+num);}}
# 输出结果 字符串: Java 数字: 123 字符串: Record

四、Switch 表达式增强(Java 14 正式)

1、基本介绍
  • 作为表达式返回值,配合->和 yield,代码更简洁
2、演示
  1. 旧写法
Stringday="MONDAY";intworkHours;switch(day){case"MONDAY":case"TUESDAY":case"WEDNESDAY":case"THURSDAY":case"FRIDAY":workHours=8;break;case"SATURDAY":workHours=5;break;case"SUNDAY":workHours=0;break;default:thrownewIllegalArgumentException("无效的星期:"+day);}System.out.println("工作时长:"+workHours);
Stringday="MONDAY";Stringfeeling;switch(day){case"MONDAY":System.out.println("周一综合征");feeling="疲惫";break;case"FRIDAY":System.out.println("终于周五了");feeling="兴奋";break;default:feeling="普通";break;}System.out.println("心情:"+feeling);
  1. 新写法
Stringday="MONDAY";intworkHours=switch(day){case"MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY"->8;case"SATURDAY"->5;case"SUNDAY"->0;default->thrownewIllegalArgumentException("无效的星期:"+day);};System.out.println("工作时长:"+workHours);
Stringday="MONDAY";Stringfeeling=switch(day){case"MONDAY"->{System.out.println("周一综合征");yield"疲惫";}case"FRIDAY"->{System.out.println("终于周五了");yield"兴奋";}default->"普通";};System.out.println("心情:"+feeling);
http://www.jsqmd.com/news/1325149/

相关文章:

  • Unity渲染优化:DrawCall、Batch与SetPassCall核心概念与性能优化实战
  • N_m3u8DL-CLI-SimpleG技术解析:WPF封装层与流媒体下载架构设计
  • OpenClaw v2026.3.24 全链路稳定性升级:从模型调用到通讯集成的深度优化
  • Linux新手速成指南:从零到精通的20个核心命令与实战场景
  • Unity URP 7.7.1实战:5分钟实现自定义扭曲特效
  • LS-DYNA霍普金森压杆动态劈裂仿真技术详解
  • 2026年四款变声器真实测评:音质自然,音色好
  • 简单说说聚合路由器
  • 国行 Apple Intelligence 获批:苹果 AI 落地中国,隐私与本地化成为关键词
  • Python在电磁测量数据处理中的int类型应用与优化
  • SpringBoot启动参数全解析:从JVM调优到K8s部署实战
  • WorkshopDL深度解析:跨平台Steam创意工坊模组下载解决方案
  • CST与Matlab联合仿真在超表面设计中的实践
  • 基于RAG与LLM的对话决策摘要系统:从海量会议到精准行动
  • 软件设计的一些感想
  • AI工程化实战:基于Hermes Agent与Claude Code构建企业级开发智能体
  • 品类解释权的系统化建设:问题框架、比较维度与证据门槛
  • CNN新闻精听实战:10分钟高效提升英语听力的系统化方法
  • C++预处理器指令详解与应用实践
  • Unity泛型类设计实战:从原理到对象池实现
  • Java 开发 - List subList 方法
  • 帕鲁世界存档编辑终极指南:3步轻松搞定存档转换与数据修改
  • Android:Handler
  • 农村围墙护栏测评:允安金属坚固美观但安装复杂、价格稍高,适
  • 折腾电科金仓 Docker 部署的一晚上:角色登录失败、远程连接失败,这几个坑终于踩完了
  • 深入解析Windows PE文件结构:从系统维护到安全分析的底层原理
  • VMware虚拟机安装Windows 10疑难全解:从镜像校验到驱动注入与引导修复
  • 多源BFS算法解析与矩阵应用实战
  • Python爬虫实战:Requests+BeautifulSoup+正则批量提取视频选集信息
  • 零基础3天掌握AI大模型实战:从环境搭建到RAG与Agent开发