Java 不可修改的映射仍然接受添加条目,而不返回UnsupportedOperationException
我正在尝试向不可修改的映射添加条目,在向原始映射的子视图添加条目时,JVM捕获不支持的操作异常,但JVM不关心直接添加到原始视图,代码说明:Java 不可修改的映射仍然接受添加条目,而不返回UnsupportedOperationException,java,collections,map,unmodifiable,Java,Collections,Map,Unmodifiable,我正在尝试向不可修改的映射添加条目,在向原始映射的子视图添加条目时,JVM捕获不支持的操作异常,但JVM不关心直接添加到原始视图,代码说明: ConcurrentMap<String, Integer> origView= new ConcurrentHashMap<String, Integer>(); Map<String,Integer> subView = Collections.unmodifiableMap(orig
ConcurrentMap<String, Integer> origView= new ConcurrentHashMap<String, Integer>();
Map<String,Integer> subView = Collections.unmodifiableMap(origView);
origView.put("s", 44); // ok
subView.put("p", 77); // java.lang.UnsupportedOperationException
ConcurrentMap origView=new ConcurrentHashMap();
映射子视图=集合。不可修改的映射(origView);
原始视图放置(“s”,44);//好啊
子视图。放置(“p”,77);//java.lang.UnsupportedOperationException
但是,Collections.unmodifiableSortedMap()的文档说明:
尝试通过其属性修改返回的排序映射(无论是直接的)
集合视图,或通过其subMap、headMap或tailMap视图,生成
在一个不支持的操作异常中
请伸出援手,谢谢
“尝试修改返回的排序映射…”
它只会在从unmodifiableMap(…)
调用返回的Map
上抛出UnsupportedOperationException
,该调用不包括原始的Map
从
unmodifiableMap(…)
返回的Map
与原始Map
集合不同。unmodifiableMap()返回原始映射的不可修改视图它不会以任何方式更改原始地图。这意味着原始地图仍然可以修改。只有尝试修改不可修改的视图时,才会出现异常。返回的映射与原始映射无关。当然,您仍然可以向原始地图添加内容。