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