可能重复:
Map.get(Object key)不是(完全)泛型的原因是什么
为什么Java的TreeSet <E> remove(Object)不带E
为什么HashSet不限制E的参数类型:
public boolean contains(Object o)
public boolean remove(Object o)
Run Code Online (Sandbox Code Playgroud)
就像它对add()一样
public boolean add(E e)
Run Code Online (Sandbox Code Playgroud)
我的意思是如果编译器强制只添加类型E的对象,那么该集合不能包含/删除任何其他类型
不同之处在于,添加必须是类型安全的,以保持集合的完整性,而项目检查/删除可以是“类型宽容”的,而不会有损害集合类型安全的风险。换句话说,如果添加了错误类型的元素,集合就会失效;另一方面,如果您检查是否存在错误类型的元素,您将简单地返回一个false. 同样的情况remove:如果您传递不兼容类型的元素,它不会出现在 set +中,因此删除将是无操作。
| 归档时间: |
|
| 查看次数: |
2301 次 |
| 最近记录: |