Java 10 新增 70+ API 与特性详解
核心 API 增强
1. Optional.orElseThrow()
java.util.Optional 新增 orElseThrow() 无参重载,作为 get() 的首选替代:
// 旧:get() 抛出 NoSuchElementException,语义不明
String value = optional.get();
// 新:明确表达“为空则抛出异常”意图
String value = optional.orElseThrow(); // 抛出 NoSuchElementException
2. 不可变集合工厂方法
List、Set、Map 新增 copyOf() 静态方法,从现有集合创建不可变副本:
List<String> modifiable = new ArrayList<>(List.of("A", "B", "C"));
List<String> unmodifiable = List.copyOf(modifiable); // 不可变副本
unmodifiable.add("D"); // 抛出 UnsupportedOperationException
Collectors 新增三个收集器直接产出不可变集合:
List<String> unmodList = stream.collect(Collectors.toUnmodifiableList());
Set<String> unmodSet = stream.collect(Collectors.toUnmodifiableSet());
Map<K, V> unmodMap = stream.collect(Collectors.toUnmodifiableMap(k -> k, v -> v));
3. 禁用 JRE 最后使用追踪
新增 JVM 标志 -XX:-JreLastUsageTracking(或 jdk.disableLastUsageTracking),禁用 JRE 使用统计上报。
4. JMX 密码哈希化
jmxremote.password 文件中的明文密码现由 JMX Agent 自动以 SHA3-512 哈希覆盖,增强安全性。
5. Javadoc 增强
--add-stylesheet:支持多样式表生成文档。--overridden-methods=value:控制被重写方法的文档分组方式。{@summary ...}内联标签:自定义 API 摘要文本,替代默认首句推断。
完整示例:不可变集合操作
import java.util.List;
import java.util.stream.Collectors;
public class Tester {
public static void main(String[] args) {
var ids = List.of(1, 2, 3, 4, 5);
try {
List<Integer> copyOfIds = List.copyOf(ids);
copyOfIds.add(6); // 运行时异常
} catch (UnsupportedOperationException e) {
System.out.println("Collection is not modifiable.");
}
try {
List<Integer> evenNumbers = ids.stream()
.filter(i -> i % 2 == 0)
.collect(Collectors.toUnmodifiableList());
evenNumbers.add(6); // 运行时异常
} catch (UnsupportedOperationException e) {
System.out.println("Collection is not modifiable.");
}
}
}
输出:
Collection is not modifiable.
Collection is not modifiable.
其他值得关注的增强
ByteBuffer、CharBuffer等缓冲区类新增mismatch()方法比较差异位置。CompletableFuture新增completeAsync()等异步补全方法。String新增strip()、stripLeading()、stripTrailing()、isBlank()、lines()、repeat(int)等(注:部分为 Java 11 引入,Java 10 主要为上述核心项)。
java
- 精通 Java 运算符:类型、语法与实战示例
- Java 注释:类型、用法与最佳实践
- 精通 Java 增强 for 循环:语法、示例与最佳实践
- 精通 Java 字符串:创建、方法与最佳实践
- 精通 Java 接口:概念、实现与最佳实践
- 精通 Java 匿名内部类:定义、语法与实战示例
- 精通 Java Try-With-Resources:自动资源管理详解
- Java 注解详解:类型、放置位置与实战示例
- Java 断言实战指南:尽早发现 Bug 与保障代码可靠性
- 掌握 Java 自动装箱与拆箱:实战示例与最佳实践
- Java 10 新增 70+ API 与特性详解
- Java 10 移除的废弃 API、特性与选项清单