2

可能重复:
为什么 Java 集合删除方法不是通用的?

有谁知道为什么MyDamnedUnclearList.remove()方法采取Object element而不是T element(或V extends T element)?

我花了两个小时才找到一个混合了Java 类型intIntegerJava 类型的错误(在List<Thread>列表中......

4

1 回答 1

1

该问题与现有代码和规范的向后兼容性有关。

Map.get(Object key) 不是(完全)通用的原因是什么

它全部在 Javadoc 的详细信息中:

布尔删除(对象 o)

从此集合中移除指定元素的单个实例(如果存在)(可选操作)。更正式地说,如果这个集合包含一个或多个这样的元素,则删除一个元素 e 使得 (o==null ? e==null : o.equals(e))。如果此集合包含指定元素(或等效地,如果此集合因调用而更改),则返回 true。

因此,您会看到对象是否具有相同类型只是它们相等并不重要。

于 2012-04-17T22:17:36.200 回答