可能重复:
Map.get(Object key) 不是(完全)通用的
原因是什么为什么我们有 contains(Object o) 而不是 contains(E e)?
正如你们在这里看到的, E 类型的模板化 java.util.List 的contains
方法没有被模板化:它Object
取而代之。有谁知道为什么?
在什么情况下List<String>
返回 true myList.contains(new OtherNonString())
?如果我没记错的话,永远不要,除非它与之比较的对象具有 E 类型作为祖先(在我的字符串示例中,由于String
是最终的,这是不可能的)
是否只是为了保持与前泛型版本的向后兼容性?我错过了一个有意义的用例吗?如果只是为了向后兼容,为什么不弃用contains(Object)
并创建一个contains(E)
?
编辑:
我的一些子问题之前已经回答过了。作为参考,还要检查这个问题