我是 Java 新手,我最近了解到,有时对 Collection 进行深度复制并对其进行不可修改的视图很重要,这样里面的数据才能保持安全和不变。当我尝试练习这个(unmodifiableMap2)时,我收到来自 IDEA 的警告:
unmodifiableMap 可以替换为 'Map.copyOf' 调用
这对我来说是有线的,因为我认为 unmodifiableMap 不仅是底层地图的副本。此外,当我尝试以另一种方式(unmodifiableMap1)创建相同的 unmodifiableMap 时,不会弹出警告!
我应该如何理解 IDEA 的这种行为?
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class test {
public static void main(String[] args) {
Map<Integer, Integer> map = new HashMap<>();
map.put(1,1);
map.put(2,2);
Map<Integer, Integer> map1 = new HashMap<>(map);
Map<Integer, Integer> unmodifiableMap1 = Collections.unmodifiableMap(map1);
Map<Integer, Integer> unmodifiableMap2 = Collections.unmodifiableMap(new HashMap<>(map););
}
}
