← 返回首页
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(范围值):提供了一种在线程间共享不可变数据的新方式,避免使用传统的线程局部存储,促进了更好的封装性和线程安全,可用于在不通过方法参数传递的情况下,传递上下文信息,如用户会话或配置设置。