Java 17 是另一个长期支持版本(LTS),于 2021 年发布,包含许多语言和平台的改进。下面列举几个值得关注的新特性:

1. 密封类(Sealed Classes)

密封类允许限制哪些类可以继承或实现某个类或接口,从而更好地控制继承层次。

1
2
3
4
5
public sealed class Shape permits Circle, Rectangle {}

public final class Circle extends Shape {}

public final class Rectangle extends Shape {}

这样,只有 CircleRectangle 可以继承 Shape

2. 强化的模式匹配(Pattern Matching)

Java 17 对 instanceof 进行了增强,可以直接声明变量,减少样板代码。

1
2
3
if (obj instanceof String s) {
System.out.println(s.toUpperCase());
}

3. 新的 switch 表达式(增强版)

switch 支持返回值和箭头语法,代码更简洁。

1
2
3
4
5
6
7
8
int day = 3;
String dayName = switch (day) {
case 1 -> "Monday";
case 2 -> "Tuesday";
case 3 -> "Wednesday";
default -> "Unknown";
};
System.out.println(dayName);

4. Text Blocks(文本块)

虽然在 Java 15 引入,Java 17 是长期支持版本,文本块继续得到支持,方便多行字符串编写:

1
2
3
4
5
6
String json = """
{
"name": "Java 17",
"type": "LTS"
}
""";

5. 新的 API 改进

  • 新增 RandomGenerator 接口,支持更多随机数生成算法。
  • Stream 增加 toList() 方法,更方便地转成不可变列表。

6. 废弃与移除

Java 17 移除了对一些过时 API 的支持,比如 Security Manager 的废弃等。


以上是 Java 17 的核心亮点,帮助提升代码简洁性、安全性和可维护性。以上内容就是本文的全部分享,欢迎大家批评指正,也欢迎交流讨论,共同进步!