不支持的操作收集上的异常

2022-09-01 12:32:57

在研究API时,我们发现如果集合的当前实现不支持这些功能,则某些方法(,...)可能会抛出一个。Collectionaddremovejava.lang.UnsupportedOperationException

实际上,在JDK中,是否存在不支持这些方法的具体内容?Collection

非常感谢您的回答。


答案 1

除了 Collections.unmodifiable* 方法返回的集合之外,还有几个有趣的案例实际上被抛出:UnsupportedOperationException

  • 通过 entrySet()、keySet()values() 访问Map 的集合视图可以删除但未添加元素,
  • Arrays.asList 返回的列表视图既不能添加元素,也不能删除元素,
  • 此外,从 和 方法获得的对象也被标记为“不可变”,因此 - 尽管API文档中没有明确说明 - 我想这些在尝试修改它们时也会引发异常。Collections.empty*Collections.singleton*

答案 2

明显的例子是从返回的实现和其他类似的方法。将更改引发此异常的方法。Collections.unmodifiableCollection()Collection