首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数参数类型

函数参数类型
EN

Stack Overflow用户
提问于 2012-07-24 04:57:49
回答 3查看 479关注 0票数 5

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

我注意到,很少有LinkedList操作采用泛型参数类型E,而有几个以'Object‘作为参数。为了前夫,

代码语言:javascript
复制
add(E e) 
remove(Object o) 

有什么特别的理由吗?为什么不让‘删除’作为一个通用类型E (我知道在类型擦除后没关系,但只是想知道)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-24 05:10:22

add和remove方法都是从Collection接口继承的。remove方法没有修改泛型参数,大概是因为它不重要。删除不会影响集合的类型安全性,而且当您更改地球上最流行的API之一时,更改越少越好。您将看到contains方法也遭受了同样的命运。

票数 0
EN

Stack Overflow用户

发布于 2012-07-24 05:23:30

这是因为删除操作使用equals()方法检查是否相等,而equals()方法接受对象作为参数,而不是泛型的。

票数 1
EN

Stack Overflow用户

发布于 2012-07-24 05:05:22

因为调用者可以使用任何类型的对象调用removecontains,所以代码仍然执行得很好。集合的类型参数使用的编译时契约仅保证*在中的任何集合都将是给定类型的。它并不关心您是否询问它是否包含不同类型的对象。

*吹毛求疵的角落,我知道Java泛型确实不是一个保证。我想更多的是句法上的糖。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11624400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档