HashMap实现了继承了AbstractMap,AbstractMap继承了Map,为什么HashMap又要直接impliments Map呢?
最近温习java集合框架的时候,发现了一些端倪。就是:HashMap实现了继承了AbstractMap,AbstractMap继承了Map,为什么HashMap又要直接impliments Map呢?而且这种情况在集合框架里面比比皆是。
我带着疑问按这个继承逻辑自定义了相关类和接口,做了一些尝试,发现最后这个直接实现Map在用法上纯属多余。
带着疑问去问了问万能的chatGPT,发现它也答错(可能是中文的歧义导致的),大家可以是这去问一问,问题内容如下:
hashmap实现了继承了AbstractMap,为什么HashMap还要直接实现Map呢?
问了很多遍它都说HashMap没有直接实现Map接口,但是打开源码一看就知道这个回答是错的。

经过一番了解网上有两个答案:
-
为了Class对象的getInterfaces方法能获取到Map
-
stackoverflow上有一个 帖子 描述道约书亚·布洛克(Joshua J. Bloch)说这是一个错误的设计。
那么真正的答案是什么呢?估计只有亲自听见约书亚·布洛克说出答案了。
或者如果你知道真正的答案希望能在评论区给出答案,谢谢!
作者在温习Java集合框架时,对HashMap既继承AbstractMap又直接实现Map接口的情况存疑。通过自定义类和接口尝试,发现此实现用法上多余,问ChatGPT答错,网上有两种答案,一是为让getInterfaces方法获取Map,二是约书亚·布洛克称是错误设计,期待真正答案。
7361

被折叠的 条评论
为什么被折叠?



