Java List接口包含(Object o)方法签名

时间:2012-10-25 00:02:14

标签: java interface

  

可能重复:
  Why aren’t Java Collections remove methods generic?

Java Collection<E>接口具有contains方法,具有以下签名:

boolean contains(Object o)

由于界面是通用的,类型为E,因此签名不应为 boolean contains(E o)

反映这一点,只允许E类型的参数。

可以询问有关remove(Object o)方法

的相同问题

1 个答案:

答案 0 :(得分:3)

containsremove方法接受任何对象,因为它们接受(并且可以成功)可能不是E实例的对象。 contract for contains是:

  

当且仅当此集合包含至少一个元素e时才返回true(o == null?e == null:o.equals(e))

请注意o实际上不必是集合中的对象;它必须只通过equals测试。

同样的想法适用于remove

另请参阅this thread,其中指出,制作containsremove通用会破坏许多现有的,完全有效的代码。