Java 22 中最令人兴奋的 3 个功能

Oracle 于 3 月 19 日发布了 Java 22,更新了世界上最流行的编程语言和开发平台。Oracle JDK 22 包括许多改进,使程序更快、更稳定、更安全。这些更新有助于开发人员更快地工作,提出新的想法,并帮助他们的公司成长。这些更新将影响 Java 语言本身、其执行方式以及 Java 开发工具包 (JDK) 中的工具。让我们深入了解该版本带来的三个最激动人心的更新。

1.无名变量和模式

该功能可解决编码中一个常见但经常被忽视的问题:需要声明在代码逻辑中并未实际使用的变量。这种情况经常发生在执行一段代码更多是为了其副作用而不是结果的情况下。例如,异常处理。处理异常往往会导致创建我们实际上用不到的变量。开发人员通常会编写如下的 catch 代码块,其中的异常变量 e 并未被使用:

try {
  int number = Integer.parseInt(s);
} catch (NumberFormatException e) {
  LOG.error("Bad number!");
}

现在,在 Java 22 中,您可以使用下划线 (_) 来表示此类未使用的变量,从而简化了语法:

try {
  int number = Integer.parseInt(s);
} catch (NumberFormatException _) {
  LOG.error("Bad number!");
}

该功能最初在 JDK 21 中作为预览版推出,现在已成为 Java 的永久新增功能,其原始实现方式没有任何变化。

2.super(…) 之前的语句(预览版)

在 Java 中,继承的概念允许子类继承超类的属性和方法,从而丰富子类已有的功能并引入新的特性。这种继承机制的一个重要方面是初始化顺序:在子类添加或修改任何属性之前,必须先初始化超类的属性。

严格的初始化顺序施加了某些限制,在对象构造过程中尤其明显。Java 强制规定,类中的任何构造函数必须调用其超类构造函数作为第一个动作。例如,我们需要验证传递给超类构造函数的参数。以前,我们无法直接验证参数。一种常见的变通方法如下:

public PositiveBigInteger(long value) {
  super(value);    
 
  if (value <= 0)
    throw new IllegalArgumentException("Not Positive!");
}

不过,有了这项新功能,我们可以更直接地实现这一目标:

public PositiveBigInteger(long value) {   
  if (value <= 0)
    throw new IllegalArgumentException("Not Positive!");

  super(value);
}

请注意,该功能目前是作为 Java 22 的预览语言功能推出的。这意味着它正处于试用阶段,允许开发人员对其功能进行试验并提供反馈,而且在未来的版本中可能会有所改变。

3.Stream Gatherers(预览版)

Java 8 中引入的Stream API改变了游戏规则,允许开发人员以函数式风格处理元素序列。但是,由于可用的操作集固定不变,某些任务仍然具有挑战性。Java 22 认识到了这一局限性,引入了 Stream::gather(Gatherer) 功能。该功能是在 Java 中编写任何中间流操作的一种创新方法,类似于 Stream::collect(Collector) 提供了一种灵活的方法来结束流处理。

java.util.stream.Gatherers类引入了多个内置收集器,如foldscanwindowFixed,它们通过强大的新功能丰富了Stream API。例如,fold对于传统上需要按顺序缩减的任务特别有用,它能从处理过的元素中输出单一结果。

下面是一个实际示例,说明如何使用fold

Optional<String> numberString =
    Stream.of(1,2,3,4,5,6,7,8,9)
          .gather(
              Gatherers.fold(() -> "", (string, number) -> string + number)
           )
          .findFirst();

结果将是 “123456789 “的Optional请注意,该功能目前也作为 Java 22 的预览语言功能引入。

java 22

结论

以上就是我非常期待的 Java 22 更新。请在评论中与我分享哪些更新吸引了你的眼球。如果您喜欢阅读本文,请关注我,获取更多 Java 指南和更新。

本文文字及图片出自 3 Most Exciting Features in Java 22

你也许感兴趣的:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注