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