Java 14 新特性及具体应用
目录
1. instanceof 模式匹配(预览特性)
2. 文本块(正式特性)
3. Records(预览特性)
4. Switch 表达式(正式特性)
5. NullPointerException 增强
6. 其他特性
总结
Java 14 (2020 年 3 月发布)引入了多项增强语言表达力、简化代码和维护性的特性。以下是核心特性及其具体应用:
1. instanceof 模式匹配(预览特性)
特性说明:
直接在 instanceof
判断中声明类型变量,避免冗余的类型转换。
应用场景:
简化对象类型检查和后续操作。
代码示例:
// 传统写法
if (obj instanceof String) {String s = (String) obj;System.out.println(s.length());
}// Java 14 模式匹配
if (obj instanceof String s) { // 直接声明变量 sSystem.out.println(s.length()); // 无需显式转换
}
2. 文本块(正式特性)
特性说明:
支持多行字符串字面量,自动处理缩进和换行。
应用场景:
JSON/XML/SQL 等结构化文本的嵌入。
代码示例:
// 传统多行字符串(需手动换行和转义)
String json = "{\n" +" \"name\": \"Java\",\n" +" \"version\": 14\n" +"}";// Java 14 文本块
String jsonBlock = """{"name": "Java","version": 14}"""; // 自动保留格式
System.out.println(jsonBlock);
3. Records(预览特性)
特性说明:
声明不可变数据类,自动生成 equals()
、hashCode()
、toString()
等方法。
应用场景:
DTO(数据传输对象)或值对象的快速定义。
代码示例:
// 传统 POJO(冗长)
public class Person {private final String name;private final int age;// 手动编写构造方法/getter/equals/hashCode/toString...
}// Java 14 Record
public record Person(String name, int age) {} // 一行定义// 使用示例
Person p = new Person("Alice", 30);
System.out.println(p.name()); // 自动生成访问器
System.out.println(p); // 自动生成 toString()
4. Switch 表达式(正式特性)
特性说明:
支持箭头语法和返回值,避免 break
导致的冗余代码。
应用场景:
简化多分支逻辑处理。
代码示例:
// 传统 switch
String dayType;
switch (day) {case "MON":case "TUE":case "WED": dayType = "Weekday";break;default:dayType = "Unknown";
}// Java 14 Switch 表达式
dayType = switch (day) {case "MON", "TUE", "WED" -> "Weekday"; // 箭头语法case "SAT", "SUN" -> "Weekend";default -> "Unknown";
}; // 直接返回值
5. NullPointerException 增强
特性说明:
明确提示 NullPointerException
发生的具体变量名。
应用场景:
快速定位空指针异常根源。
代码示例:
public class NPEExample {static class User {Address address;}static class Address {String street;}public static void main(String[] args) {User user = new User();// 传统 NPE 仅提示行号System.out.println(user.address.street); }
}
输出:
Exception in thread "main" java.lang.NullPointerException: Cannot read field "street" because "user.address" is null
6. 其他特性
- 打包工具(jpackage):
将应用打包为原生安装包(如.exe
/.dmg
)。jpackage --name MyApp --input lib --main-jar app.jar
- G1 垃圾回收器优化:
提升大堆内存处理效率。 - 外部内存访问 API(孵化器):
安全操作堆外内存(如避免Unsafe
类)。
总结
Java 14 通过:
- 简化代码(Records、文本块、Switch 表达式)
- 增强安全性(NPE 信息增强)
- 提升开发效率(模式匹配、打包工具)
使开发者能更专注于业务逻辑,减少模板代码。建议在非生产环境试用预览特性(通过 --enable-preview
启用)。