在您的第一种情况下, 某人 可以访问List<Person> unmodifiableList
并可以对其进行编辑,但是当您collect
没有人可以访问List
由Collectors.toList
- 生成的内容时,那么您就很好。
您可能缺少的是Collectors::toList
将创建一个 新 列表-这应该很明显;并且将其包装为不可修改的文件,因此其结果是真正不可修改的。
同样在java-10中有一个特殊的收集器:
List<Integer> result = Arrays.asList(1, 2, 3, 4)
.stream()
.collect(Collectors.toUnmodifiableList());