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()是通用的并且限制了它的参数类型,那将是不可能的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)