java21学习笔记-未命名的模式和变量 - 指南

news/2025/9/26 20:38:29/文章来源:https://www.cnblogs.com/ljbguanli/p/19110748

java21学习笔记-未命名的模式和变量 - 指南

使用未命名变量和未命名模式增强 Java 编程语言,当需要变量声明或嵌套模式但从未使用时可以使用。两者都用下划线字符 _ 表示。

443:Unnamed Patterns and Variables (Preview)        java21
456:Unnamed Variables & Patterns                            java22

在java21中预览,在java22中正式发布。

使用下划线字符 _ 声明未命名的变量 (U+005F),以代替局部变量中局部变量的名称 declaration 语句,或 catch 子句中的异常参数,或 lambda 表达式中的 lambda 参数。

使用场景

块中的局部变量声明语句

record Point(int x, int y) { }
enum Color { RED, GREEN, BLUE }
record ColoredPoint(Point p, Color c) { }
public static void main(String[] args) {
var point = new Point(12, 34);
if (point instanceof Point(int x, _)) {
System.out.println((Point) point);
System.out.println(point.x);
System.out.println(x);
}
switch (point) {
case Point(int x, _) -> System.out.println("Hello, Point!" + x);
default -> System.out.println("default");
}
}

try-with-resources 语句的资源规范

String _age = "181";
String __ = "18";
String MAX_AGE = "118";
try (var _ = new FileOutputStream(new File("C:\\Users\\Administrator\\Desktop\\todo.md")) ) {    // Unnamed variable
//        try (var _ = new FileOutputStream(new File("")) ) {    // Unnamed variable
System.out.println(_age);
System.out.println(__);
System.out.println(MAX_AGE);
} catch (FileNotFoundException _) { // Unnamed variable
System.out.println("File not found");
} catch (IOException e) {
throw new RuntimeException(e);
}

基本 for 循环的标头

for (int i = 0, _ = sideEffect(i); i < a.size(); i++) { //但是不需要sideEffect复杂方法的返回值 Unnamed variable
System.out.println(a.get(i));
}
static int sideEffect(int i) {
System.out.println("这个方法很复杂,有一大堆逻辑需要执行");
return 0;
}

增强型 for 循环的标头

Map stringStringMap = Map.of("1", "a", "2", "b", "3", "c");
Set strings = stringStringMap.keySet();
System.out.println(count(strings));
static int count(Iterable orders) {
int total = 0;
for (String _ : orders)    // Unnamed variable
total++;
return total;
}

catch 块的异常参数

try (var _ = new FileOutputStream(new File("")) ) {    // Unnamed variable
System.out.println(_age);
System.out.println(__);
System.out.println(MAX_AGE);
} catch (FileNotFoundException _) { // Unnamed variable
System.out.println("File not found");
} catch (IOException e) {
throw new RuntimeException(e);
}

lambda 表达式的形式参数

Map stringStringMap = Map.of("1", "a", "2", "b", "3", "c");
Set strings = stringStringMap.keySet();
strings.forEach(_ ->{System.out.println("不适用循环中的这个变量");}); // Unnamed variable

总体的大概意思就是增强写法,把不用的变量或者模式直接用"_"代替。

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

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

相关文章

石家庄网站建设外贸做网站建设的怎么拓展业务

135编辑器1李磊&#xff1a;磊&#xff0c;假期过的可好&#xff1f;有没有人在写作业呀&#xff1f;通过这段时间的学习&#xff0c;可以看得出你对我们的课程兴趣浓厚&#xff0c;尤其是scratch&#xff0c;自己做了好多的案例&#xff0c;之前还以为你们都是从网上直接下载的…

达梦数据库DM-查询指定模式下表的大小

需求:需要查一个模式下所有表的大小,以MB为单位: sql: SELECT * FROM (SELECT OWNER,TABLE_NAME,TABLE_USED_SPACE(OWNER,TABLE_NAME)*PAGE()/1024/1024.0 AS "MB"FROM SYS.ALL_TABLESWHERE OW…

【笔记】Prfer 序列

Prfer 序列和 Cayley 公式之前的版本 观前提示:可以用 alt+0252 打出来 这个字符喵 1. 对树建立 Prfer 序列 \(\rm Def.\) Prfer 序列的构建如下: 每次选择树中编号最小的叶节点并删去它,并在一个初始为空的序列末…

win11 无线投屏(Miracast:)引发的思考附带解决方案 - Popeye

这个功能想必大家使用的情况很多,比如平板或手机投屏到电脑上,实现多屏设备的统一管理。 就这个功能自己几次更新后,被系统给屏蔽了,并提示出了红色字体。静止使用。 一般出现这个问题后解决思路有以下几个方向 1.…

2025年十大主流项目管理工具评测:功能覆盖与成本效益分析

2025年项目管理工具市场正经历技术革新与功能升级的关键阶段,企业面临众多选择却难以快速匹配需求。本文从功能覆盖度、团队适配性、成本效益三大核心维度,横向评测禅道、Asana、Trello、Jira、ClickUp、Monday.com、…

关于服装店网站建设的策划方案温州seo公司

前言 在服务器的VMWARE ESXi系统环境中&#xff0c;我们经常需要创建虚拟机来运行各种应用程序。然而&#xff0c;服务器如果偶尔出现自动重启以及紫屏报错的问题&#xff0c;说明服务器内部出现了故障&#xff0c;一般情况下重启机器能够解决问题&#xff0c;但时间一长&…

完整教程:服务器磁盘空间满了怎么办?阿里云ECS清理与云盘扩容教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

航空总医院医院网站建设招标网站全国企业公示网查询官网

目录 1. 数据采集 2. 图像标注 3. 开源已标记数据集 4. 数据集划分 参考&#xff1a; 1. 数据采集 数据采集是深度学习和人工智能任务中至关重要的一步&#xff0c;它为模型提供了必要的训练样本和测试数据。在实际应用中&#xff0c;数据采集的方法多种多样&#xff0c;每…

分布式专题——19 Zookeeper分布式一致性协议ZAB源码剖析 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

关于MCO使用配置

关于MCO,相关介绍如下图: 针对以上8个时钟信号作为MCO时钟输出的配置如下:1、系统时钟输出此时MCO引脚(PA8)输出时钟频率即系统主频的大小GPIO_InitTypeDef GPIO_InitStructure = {0};RCC_APB2PeriphClockCmd(RC…

网络运维 --- ntp服务器

网络运维 --- ntp服务器在Windows系统中开启NTP服务器功能,主要可以通过以下步骤实现。以下是详细说明:方法一:通过注册表配置(适用于Windows专业版/服务器版)开启NTP服务器功能:按 Win + R 输入 regedit 打开注…

站点和网站的区别南宁网站建设活动

首先&#xff0c;我们需要明确一点&#xff0c;HTTPS证书的价格并不是一成不变的&#xff0c;它受到多种因素的影响。其中最主要的因素包括证书的类型、颁发机构以及所需的验证级别。 从类型上来看&#xff0c;HTTPS证书主要分为单域名证书、多域名证书和通配符证书。单域名证书…

向量那点事儿

目录一、向量坐标表示二、加减法向量加法应用示例向量减法应用示例三、向量内积应用示例四、向量外积应用示例五、小试牛刀代码示例六、小结 一、向量 这次我们继续聊一下向量。 向量可以理解为一个有方向的量。 它既有…

c++输入输出详解

C++ 的输入输出(I/O)主要通过标准库中的流对象实现,核心是对“数据流”的操作。其语法规则围绕“流对象”“操作符”和“数据类型匹配”展开,以下从标准 I/O(控制台) 和文件 I/O 两部分详细说明。 一、标准输入输…

docker/docker compose/k8s

Docker、Docker Compose 和 Kubernetes(K8s)是现代容器化技术的核心组成部分,但它们扮演着不同的角色。 简单来说:Docker:用来创建和运行单个容器的工具。Docker Compose:用来定义和运行多个相互依赖的容器的工具…

中国开发者迎来新选择:Gitee成为研发协作平台转型期的中流砥柱

中国开发者迎来新选择:Gitee成为研发协作平台转型期的中流砥柱 随着腾讯CODING DevOps系列产品宣布逐步停止服务,中国开发者社区正面临一次重要的工具链迁移抉择。在这一行业转折点上,本土化研发协作平台Gitee凭借其…

PySpark - Get the number of rows

PySpark - Get the number of rowsspark is a SparkSession object, what does spark.sql().collect() do? ChatGPT said:Good question 👍 Let’s break it down:spark → a SparkSession object.spark.sql(query)…

如何推销网站建设做网站怎么签订协议

元描述&#xff1a;想要找到下一个 100 倍加密货币投资&#xff1f;请密切关注这篇文章&#xff1b;它揭示了所有可能很快变得非常有价值的 TON 网络宝石。 由 Telegram 提供支持的 TON&#xff08;开放网络&#xff09;生态系统正在蓬勃发展&#xff01;这是一个充满激动人心的…

RK3588-ubuntu server - 详解

RK3588-ubuntu server - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

一文教你上手 Geometric Glovius 6.0:安装、授权与首个项目演示

Geometric Glovius 6.0.0是一款功能强大的3D可视化分析软件。它支持CATIA、NX、Creo等多种主流CAD文件格式,能精确测量距离、面积、体积等数据,还可进行动态截面切割、模型差异对比等操作。用户可通过缩放、旋转等方…