Com*_*uid 8 java generics collections treeset
从Java 6 TreeSet<E>文档:
boolean remove(Object o):
Removes the specified element from this set if it is present.
Run Code Online (Sandbox Code Playgroud)
为什么这会接受Object而不是泛型E?唯一可以添加的对象是E类型,因此唯一的可移动类型应该是E类型.
从第一条评论中回答:
神话:
一个流行的神话是它是愚蠢和邪恶的,但由于向后兼容性,它是必要的.但兼容性论点无关紧要; 无论您是否考虑兼容性,API都是正确的.
真正的原因:
统一地,Java Collections Framework(以及Google Collections Library)的方法从不限制其参数的类型,除非必须防止集合被破坏.
在这里阅读更多:为什么Set.contains()采用对象而不是E?
remove(),当给定一个相等的元素时, likeget()才能起作用(以 而言)。在 Java 中,不同类的对象有可能(并且在某些情况下是必需的)相等。因此,您不应该限制类型。.equals()
| 归档时间: |
|
| 查看次数: |
872 次 |
| 最近记录: |