Java Collection<E>
接口具有contains
方法,具有以下签名:
boolean contains(Object o)
由于界面是通用的,类型为E
,因此签名不应为
boolean contains(E o)
反映这一点,只允许E
类型的参数。
可以询问有关remove(Object o)
方法
答案 0 :(得分:3)
contains
和remove
方法接受任何对象,因为它们接受(并且可以成功)可能不是E
实例的对象。 contract for contains
是:
当且仅当此集合包含至少一个元素e时才返回true(o == null?e == null:o.equals(e))
请注意o
实际上不必是集合中的对象;它必须只通过equals
测试。
同样的想法适用于remove
。
另请参阅this thread,其中指出,制作contains
和remove
通用会破坏许多现有的,完全有效的代码。