HashMap实现了继承了AbstractMap,AbstractMap继承了Map,为什么HashMap又要直接impliments Map呢?

作者在温习Java集合框架时,对HashMap既继承AbstractMap又直接实现Map接口的情况存疑。通过自定义类和接口尝试,发现此实现用法上多余,问ChatGPT答错,网上有两种答案,一是为让getInterfaces方法获取Map,二是约书亚·布洛克称是错误设计,期待真正答案。

HashMap实现了继承了AbstractMap,AbstractMap继承了Map,为什么HashMap又要直接impliments Map呢?

最近温习java集合框架的时候,发现了一些端倪。就是:HashMap实现了继承了AbstractMap,AbstractMap继承了Map,为什么HashMap又要直接impliments Map呢?而且这种情况在集合框架里面比比皆是。

我带着疑问按这个继承逻辑自定义了相关类和接口,做了一些尝试,发现最后这个直接实现Map在用法上纯属多余。

带着疑问去问了问万能的chatGPT,发现它也答错(可能是中文的歧义导致的),大家可以是这去问一问,问题内容如下:
hashmap实现了继承了AbstractMap,为什么HashMap还要直接实现Map呢?

问了很多遍它都说HashMap没有直接实现Map接口,但是打开源码一看就知道这个回答是错的。
在这里插入图片描述

经过一番了解网上有两个答案:

  1. 为了Class对象的getInterfaces方法能获取到Map

  2. stackoverflow上有一个 帖子 描述道约书亚·布洛克(Joshua J. Bloch)说这是一个错误的设计。

那么真正的答案是什么呢?估计只有亲自听见约书亚·布洛克说出答案了。
或者如果你知道真正的答案希望能在评论区给出答案,谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值