为什么Java的Hashtable的get方法将Object作为参数?

时间:2009-11-04 15:53:35

标签: java generics

  

可能重复:
  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方法的参数。

2 个答案:

答案 0 :(得分:1)

这允许任何等于给定键的Object获取值。

例如,您可能有两个类覆盖equals方法,以便在相互比较时返回true。由于对象是等价的,因此它们都应该能够获得值。

这与equals方法具有Object参数的原因相同。

答案 1 :(得分:0)

get方法将任意Object作为关键,因为任何对象都可以存储在HashMap中(因为所有对象都是{{1}类型的子类})。

它只检查Object的.equals方法,以便在Object中返回匹配。