代码对比
✕ Java 8
List<String> copy =
Collections.unmodifiableList(
new ArrayList<>(original)
);
✓ Java 10+
List<String> copy =
List.copyOf(original);
发现此代码有问题? 告诉我们。
为什么现代方式更好
智能复制
如果源已经是不可变的,则跳过复制。
真正不可变
结果集合结构上不可修改。
简洁
一行代码替代多行手动复制和包装。
旧方式
手动复制 + 包装
现代方式
List.copyOf()
自 JDK
10
难度
入门
JDK 支持
不可变地复制集合
可用
自 JDK 10 起广泛可用(2018 年 3 月)
工作原理
List.copyOf()、Set.copyOf() 和 Map.copyOf() 创建不可变快照。如果源集合已经是不可变的,则跳过复制——这一实现细节对调用者透明。
相关文档