为什么Java Collections不能通用删除方法?

为什么Java Collections不能通用删除方法?,第1张

为什么Java Collections不能通用删除方法?

remove()
(Map以及中的
Collection
)不是通用的,因为你应该能够将任何类型对象传递给
remove()
。删除的对象不必与你传递给的对象具有相同的类型
remove()
;它只要求它们相等。从本说明书中
remove()
remove(o)
将删除对象e,使得
(o==null ? e==null : o.equals(e))
是true。请注意,没有什么要求,o并且e必须是相同的类型。这是因为该
equals()
方法接受一个
Objectas
参数,而不仅仅是与该对象相同的类型。

虽然,通常已经

equals()
定义了许多类,以便其对象只能等于其自己的类的对象,这确实是正确的,但事实并非总是如此。例如,的规范
List.equals()
说两个
List
对象都是相同的,并且都是相同的内容,即使它们都是的不同实现,也是如此
List
。因此,回到这个问题的示例中,有可能让
Map<ArrayList, Something>and
和我
remove()
一起使用
linkedListas
参数调用它,并且应该删除键,该键是具有相同内容的列表。如果
remove()
是通用的并且限制了它的参数类型,那将是不可能的。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4990588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存