本文共 3086 字,大约阅读时间需要 10 分钟。
JDK 14 于 2020 年 3 月 17 日正式发布,引入了多项新特性,其中 Records 和 Switch Expressions(SE)是备受关注的亮点。以下将深入探讨这两大特性的实现原理、用法及应用场景。
Records(记录)是一种紧凑的语法,用于定义类以存储和公开数据。传统上,创建这样的类需要编写大量冗长的代码,包括字段、构造函数、 getter/setter 方法、 equals、 hashCode 方法等。Records 的目标是简化这一过程,让开发者能够轻松创建纯数据载体类。
语法简洁:类可以通过一行代码定义,例如:
record Person(String firstName, String lastName) {}
这相当于传统的类定义,但省去了许多冗余代码。
不可变数据:Records 类默认是不可变的,字段不能被修改。这样可以避免一些常见的错误,例如 null 显性。
自动生成方法:Records 类会自动生成 hashCode、equals、toString 方法,这些方法基于字段的值进行计算,减少了手动编写的工作量。
支持静态字段和方法:可以在 Records 类中添加静态字段和方法,但这些方法不会影响类的单一性,适用于特定场景。
简单的记录类:
record Person(String name, int age) {}
这个类可以存储一个人的姓名和年龄,无需额外的 getter 方法。
复杂的记录类:
record Employee( String firstName, String lastName, int age, Date hireDate) {}
这个类包含多个字段,适用于需要存储多个属性的场景。
静态方法:
record Person { static int getPopulation() { return 2023; }}
自定义构造函数:
record Person(String name, int age) { Person(String fullName) { this(fullName.split(" ")[0], this(fullName.split(" ")[1])); }}
这样可以根据全名生成首字母和姓氏。
Switch Expressions 是 JDK 14 中的另一大特性,扩展了 switch 语句的用法,使其既可以作为语句,也可以作为表达式。这种变化极大地简化了多条件判断的逻辑。
支持多种语法:
switch (day) { case MONDAY: case FRIDAY: case SUNDAY: System.out.println(6); break; case TUESDAY: System.out.println(7); break; case THURSDAY: case SATURDAY: System.out.println(8); break; case WEDNESDAY: System.out.println(9); break;}
switch (day) { case MONDAY, FRIDAY, SUNDAY -> System.out.println(6); case TUESDAY -> System.out.println(7); case THURSDAY, SATURDAY -> System.out.println(8); case WEDNESDAY -> System.out.println(9);}
支持表达式形式:
int numLetters = switch (day) { case MONDAY, FRIDAY, SUNDAY -> 6; case TUESDAY -> 7; case THURSDAY, SATURDAY -> 8; case WEDNESDAY -> 9;};
这种形式更适合表达式为值的场景。
新的控制语句:
默认值和异常处理:
多条件判断:
String result = switch (userInput) { case "read" -> "正在读取文件"; case "write" -> "正在写入文件"; default -> "未识别的操作";};
表达式逻辑:
int score = switch (examType) { case "数学" -> 90; case "英语" -> 80; default -> 0;};
异常处理:
String result = switch (input) { case "exit" -> { yield null; } default -> { throw new IllegalStateException("输入错误"); }};
除了 Records 和 Switch Expressions,JDK 14 还引入了多项其他特性,例如:
虽然本文主要介绍 Java 的新特性,但 Kotlin 作为 Java 的现代化补充语言,逐渐成为开发者青睐的选择。其语法简洁、安全性强、可读性高的特点,使其在现代应用开发中占据重要地位。
JDK 14 引入的 Records 和 Switch Expressions 等特性,显著提升了 Java 的开发效率和代码质量。Records 通过简化纯数据类的定义,为开发者节省了大量手动编写代码的时间,而 Switch Expressions 的扩展则让多条件判断更加直观和简洁。这些特性预示着 Java 在未来版本中将更加注重简洁性和现代化,迎来新的发展机遇。
转载地址:http://glma.baihongyu.com/