可能重复:
为什么 Java 集合删除方法不是通用的?
有谁知道为什么MyDamnedUnclearList.remove()
方法采取Object element
而不是T element
(或V extends T element
)?
我花了两个小时才找到一个混合了Java 类型int
和Integer
Java 类型的错误(在List<Thread>
列表中......
可能重复:
为什么 Java 集合删除方法不是通用的?
有谁知道为什么MyDamnedUnclearList.remove()
方法采取Object element
而不是T element
(或V extends T element
)?
我花了两个小时才找到一个混合了Java 类型int
和Integer
Java 类型的错误(在List<Thread>
列表中......
该问题与现有代码和规范的向后兼容性有关。
Map.get(Object key) 不是(完全)通用的原因是什么
它全部在 Javadoc 的详细信息中:
布尔删除(对象 o)
从此集合中移除指定元素的单个实例(如果存在)(可选操作)。更正式地说,如果这个集合包含一个或多个这样的元素,则删除一个元素 e 使得 (o==null ? e==null : o.equals(e))。如果此集合包含指定元素(或等效地,如果此集合因调用而更改),则返回 true。
因此,您会看到对象是否具有相同类型只是它们相等并不重要。