如果我写
List<Integer> a1 = Arrays.asList(1, 2, 3);
List<Integer> a2 = Collections.unmodifiableList(a1);
a2
是只读的,但如果我写
a1.set(0,10);
然后a2
也被修改。
如果在 API 中说:
返回指定集合的不可修改视图。此方法允许模块为用户提供对内部集合的“只读”访问权限。
那么,为什么如果我修改原始集合也修改了目标复制的集合?
也许我误解了它的含义,如果是这样,那么编写该集合的防御性副本的方法是什么?