Java 不可修改的映射仍然接受添加条目,而不返回UnsupportedOperationException

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

我正在尝试向不可修改的映射添加条目,在向原始映射的子视图添加条目时,JVM捕获不支持的操作异常,但JVM不关心直接添加到原始视图,代码说明:

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()返回原始映射的不可修改视图它不会以任何方式更改原始地图。这意味着原始地图仍然可以修改。只有尝试修改不可修改的视图时,才会出现异常。

返回的映射与原始映射无关。当然,您仍然可以向原始地图添加内容。