可能重复:
What are the reasons why Map.get(Object key) is not (fully) generic
从JDK文档中,put方法:
public V put(K key, V value)
但是,get方法:
public V get(Object key)
有什么想法吗?
注意:在我继承的一些代码中,有一个错误,有人使用String作为带有Integer键的Hashtable的get方法的参数。
答案 0 :(得分:1)
这允许任何等于给定键的Object
获取值。
例如,您可能有两个类覆盖equals
方法,以便在相互比较时返回true。由于对象是等价的,因此它们都应该能够获得值。
这与equals方法具有Object
参数的原因相同。
答案 1 :(得分:0)
get
方法将任意Object
作为关键,因为任何对象都可以存储在HashMap
中(因为所有对象都是{{1}类型的子类})。
它只检查Object
的.equals方法,以便在Object
中返回匹配。