为什么HashMap扩展AbstractMap并实现Map?扩展AbstractMap是不够的,因为AbstractMap实现了Map?Java.util.HashMap - 为什么HashMap扩展AbstractMap并实现Map?
11
A
回答
5
这是多余的。我怀疑这是出于“文档”的原因。 HashMap实现了Map,你可以依赖它。它扩展AbstractMap的事实可以说是一个实现细节。 (虽然未来版本的HashMap不太可能扩展AbstractMap,因为可能有的一些代码在那里,希望HashMap可以分配给AbstractMap。)
0
它是多余的,但并不伤害。如果他们不想在将来执行 AbstractMap
,它仍然可以工作。
+3
除了这是一个突破性的改变 - 某处某人将会完成“Map map = objectOfTypeAbstractMap”。 – 2010-02-19 08:26:56
0
还有一件事是AbstractMap是一个实现细节。它可能在Oracle JDK的未来版本中不存在。它可能在当前版本的IBM JDK中不存在。但是,无论它是否存在,HashMap都应始终符合List协议。因此,它明确地在类声明中通过指定'HashMap implements Map'捕获
相关问题
- 1. 为什么HashMap在扩展AbstractMap时实现Map?
- 2. Java:WeakHashMap为什么实现Map,而AbstractMap已经实现了它?
- 3. 为什么映射助手扩展hashmap会有用?为什么不使用hashmap?
- 4. 扩展MouseAdapter并实现ActionListener
- 5. Angular 4扩展并实现
- 6. Map实现为什么要覆盖foreach?
- 7. Java上的跳过列表扩展AbstractMap
- 8. Grails params map as java.util.HashMap
- 9. 为什么策略模式使用实现而不是扩展?
- 10. 为什么一些集合扩展抽象也实现接口?
- 11. 为什么不扩展工具与实现?
- 12. 为什么Map不能扩展Collection接口
- 13. 扩展类并实现接口
- 14. 扩展类并实现接口
- 15. 为什么页脚扩展?
- 16. 为什么扩展Exception类?
- 17. 为什么Node.js可扩展?
- 18. 为什么LinkedList作为HashMap的存储桶实现而不是另一个Hashmap?
- 19. 为什么HashSet的作为HashMap的内部实现
- 20. 为什么std :: map实现为红黑树?
- 21. 为扩展绑定实现IEndpointBehavior
- 22. 在Groovy中扩展一个类并实现一个特性有什么区别?
- 23. 为什么我的HashMap实现比JDK慢10倍?
- 24. 为什么HashSet实现中的HashMap瞬态?
- 25. 为什么要扩展JerseyTest vs扩展TestCase导致没有测试被发现
- 26. 自定义扩展点的最佳实现是什么
- 27. 有什么办法可以用proto3来实现扩展吗?
- 28. 什么是扩展实现中的Get/SetPropertyValue的名称空间
- 29. 写我自己的'TreeMap'类 - 什么扩展和/或实现?
- 30. 实现AngularJS的Firefox扩展
基本上与此相同的问题: http://stackoverflow.com/questions/2165204/why-does-linkedhashsete-extend-hashsete-and-implement-sete - - 简短版本:这种冗余会对Javadoc的生成方式产生影响。 – 2010-02-19 17:29:53
我被刺激调查,实际上,Javadoc不是问题。新的简短版本:这只是一个错误。 – 2010-02-19 17:41:50
heh。我今天也问过这个。我被告知这是一个“善意的错误”,并且最初的推理是我在答案中提到的接口与实现的关系。 – 2010-02-20 02:09:04