Set是一个界面.实现该接口的类不一定需要为可选操作提供实现.
我认为这些可选操作可以追溯到通用Collection界面,其中操作是可选的,对某些类型的集合没有意义.例如add,对某种只读集合并不真正有用的操作.它在Javadoc中明确地拼写出来,因此它成为所有集合类提供的一部分,但是使用它的人知道,鉴于某些集合他们并不确切知道,可能是该方法只是抛出一个UnsupportedOperationException.
该接口中包含的“破坏性”方法(即修改其操作的集合的方法)被指定为在该集合不支持该操作时抛出 UnsupportedOperationException。在这种情况下,如果调用对集合没有影响,这些方法可能(但不是必须)抛出 UnsupportedOperationException。例如,如果要添加的集合为空,则在不可修改的集合上调用 addAll(Collection) 方法可能(但不是必须)引发异常。
请注意,其中描述的许多方法都不是可选的。
可以说,Java 集合框架并不完美。这可能是突出其(微小)头的缺陷之一。
| 归档时间: |
|
| 查看次数: |
8315 次 |
| 最近记录: |