news 2026/8/4 7:09:34

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/4 7:04:15

VMware Workstation 安装与配置全指南:从环境检查到虚拟机创建

这类工具最值得先看的不是功能列表&#xff0c;而是能不能在普通环境里稳定跑起来。VMware Workstation 作为一款成熟的虚拟机软件&#xff0c;核心价值在于让你能在 Windows 或 Linux 主机上&#xff0c;稳定、隔离地运行多个其他操作系统&#xff0c;比如 Windows、Linux 甚至…

作者头像 李华
网站建设 2026/8/4 6:58:04

Android广告SDK集成实战:穿山甲接入避坑指南与性能优化

1. 项目缘起&#xff1a;一次看似简单的SDK集成最近在做一个商业化项目&#xff0c;需要接入穿山甲广告联盟的Android SDK。说实话&#xff0c;一开始我并没太当回事&#xff0c;心想不就是加个依赖、配个权限、调几个API嘛&#xff0c;这种第三方SDK接入的活儿干过不少&#x…

作者头像 李华
网站建设 2026/8/4 6:52:11

Sunshine终极指南:打造专业级家庭游戏串流系统的完整方案

Sunshine终极指南&#xff1a;打造专业级家庭游戏串流系统的完整方案 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 你是否曾梦想过在客厅大屏电视上畅玩PC独占的3A大作&#xff…

作者头像 李华
网站建设 2026/8/4 6:50:59

SpringBoot在线招聘系统架构设计与核心模块实现

1. 项目概述&#xff1a;2026在线招聘系统的技术选型与核心价值2026年在线招聘系统采用SpringBoot作为基础框架&#xff0c;这个选择在当前企业级应用开发中已经成为行业标配。我去年主导过三个类似系统的架构设计&#xff0c;发现SpringBoot的约定优于配置理念能节省至少40%的…

作者头像 李华
网站建设 2026/8/4 6:50:53

英语时态辨析:面包变质的正确表达

1. 英语时态辨析&#xff1a;面包变质的正确表达作为一名英语教育从业者&#xff0c;我经常遇到学生对于英语时态选择的困惑。今天我们就来深入探讨一个经典案例&#xff1a;"The bread is going to be stale"、"The bread is going stale"和"The bre…

作者头像 李华