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



