← 返回首页

Java 21 新特性知道哪些?

新语言特性:

  • Switch 语句的模式匹配(JEP 441):它允许在switch的case标签中使用模式匹配,使操作更加灵活和类型安全,减少了样板代码和潜在错误。例如,对于不同类型的账户类,可以在switch语句中直接根据账户类型的模式来获取相应的余额,如case SavingsAccount sa -> result = sa.getSavings();
  • 记录模式(Record Patterns,JEP 440):将模式匹配扩展到记录类(record),允许在 instanceof 或 switch 中直接对 record 进行解构。例如:if (obj instanceof Point(int x, int y)) { ... },可以直接把 Point 记录的组件解构到 x、y 变量中。
  • 字符串模板(预览版,JEP 430):提供了一种更可读、更易维护的方式来构建复杂字符串,支持在字符串字面量中直接嵌入表达式。需要通过模板处理器(如 STR)调用,嵌入表达式使用 \{...} 语法。例如,以前可能需要使用 "hello " + name + ", welcome!" 这样的方式拼接字符串,Java 21 中可以写成 STR."hello \{name}, welcome!"。注意:该特性在 JDK 23 中已被撤回以待重新设计。

新并发特性方面:

  • 虚拟线程:这是 Java 21 引入的一种轻量级并发的新选择。它的栈在堆上动态分配,运行时挂载到平台载体线程(carrier thread)上执行,挂起时栈被卸载到堆中,因此可以创建大量虚拟线程而不消耗大量内存,显著提升了 I/O 密集型应用的吞吐量和响应速度。可以使用静态构建方法、构建器或 ExecutorService 来创建和使用虚拟线程。
  • Scoped Values(范围值):提供了一种在线程间共享不可变数据的新方式,避免使用传统的线程局部存储,促进了更好的封装性和线程安全,可用于在不通过方法参数传递的情况下,传递上下文信息,如用户会话或配置设置。