Java21新特性 – 未命名模式和变量,英文“Unnamed Patterns and Variables”,该新特性的目的是提高代码的可读性和可维护性,目前是一个预览语言功能。
特性说明
未命名模式和变量新特性,即允许使用下划线 _ 来表示未命名模式或变量。这一特性旨在用 _ 标识无效或不需要使用的模式或变量,由于它们是没有名称,编译器将确保这样的变量确实未被使用。
应用场景及示例
try-catch中
下面通过一个例子来理解该特性,try-catch异常处理块相信大家都熟悉,以前我们是这样写的:

程序员导航
优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站
try {
//...
} catch (Exception e) {
System.out.println("出现异常");
}
其中e 对当前的代码而言,就是未使用的变量,可以用_代替,如下:
try {
//...
} catch (Exception _) {
System.out.println("出现异常");
}
简而言之,如果在代码中声明了一个变量,但又不打算使用它。这个时候,我们就可以将其替换为下划线字符_。这可以应用于各种场景,例如try-catch块、for循环等等。
方法参数中
比如使用在方法参数中,y坐标没有被使用,可以直接用_代替:
Object object = null;
if (object instanceof Points(int x, int _)) {
System.out.println("object是一个坐标, x = " + x);
}
switch 表达式中
原先我们可能这样写:

AI 工具导航
优网导航旗下AI工具导航,精选全球千款优质 AI 工具集
Object obj = null;
switch (obj) {
case Integer i -> System.out.println("Integer类型");
default -> System.out.println("不是Integer类型");
}
其中i变量没有用到,改写为:
Object obj = null;
switch (obj) {
case Integer _ -> System.out.println("Integer类型");
default -> System.out.println("不是Integer类型");
}
lambda 参数
类似如下:
stream.collect(Collectors.toMap(String::toUpperCase, _ -> "NODATA"))
总结
虽然Java21新特性 – 未命名模式和变量在表面上看似没什么大作用,甚至可有可无,但实际上很受欢迎,因为她能够通过清晰标识说明未被使用的变量,极大地提高代码的可读性,并避免潜在的错误。不过,目前还不能将 _ 用作重载方法的参数。以上就是Java21新特性 – 未命名模式和变量的全部内容。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...



