Java21新特性 – 未命名模式和变量(预览-JEP 443)

后端 潘老师 6个月前 (11-03) 230 ℃ (0) 扫码查看

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新特性 – 未命名模式和变量的全部内容。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/back/10587.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】