单例 Map 中的 UnsupportedOperationException

Jok*_*ker 0 java hashmap

每当我尝试运行以下代码时,它都会抛出UnsupportedOperationException

但是,根据我的理解,它应该可以正常工作,因为我正在计算其值K已经存在于Map

public class MyClass {
public static void main(String[] args) {
    Collections.singletonMap("k", "v").computeIfAbsent("k", k -> "v" ); 
   }
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我理解这种行为吗?

Mạn*_*yễn 5

Collections.singletonMap()不返回完全实现的Map.

public static <K,V> Map<K,V> singletonMap(K key, V value) {
        return new SingletonMap<>(key, value);
}
Run Code Online (Sandbox Code Playgroud)

尝试更新映射的操作将抛出异常UnsupportedOperationException(否则,返回的映射不再是不可变的)