【发布时间】:2013-02-27 11:35:09
【问题描述】:
如果我写
List<Integer> a1 = Arrays.asList(1, 2, 3);
List<Integer> a2 = Collections.unmodifiableList(a1);
a2 是只读的,但如果我写了
a1.set(0,10);
那么a2也被修改了。
如果在API中说:
返回指定集合的不可修改视图。这种方法 允许模块为用户提供对内部的“只读”访问 收藏。
那么,为什么如果我修改了原始集合,目标复制的集合也被修改了?
也许我误解了它的意思,如果是这样,有什么办法 为该集合写一份防御性副本?
【问题讨论】:
-
如果您想要一个不可修改的 a1 版本,那么您可以克隆 a1 并将其设为不可修改的列表。那么对 a1 的更新不会影响 a2。
标签: java collections unmodifiable