¿por qué HashMap extiende AbstractMap e implementa Map? está extendiendo AbstractMap no es suficiente, porque AbstractMap implementa Map?Java.util.HashMap: ¿por qué HashMap extiende AbstractMap e implementa Map?
Respuesta
Es redundante. Sospecho que fue hecho por "documentación". HashMap implementa Map, y puede confiar en eso. El hecho de que extienda AbstractMap es discutiblemente solo un detalle de implementación. (Aunque es muy poco probable que las futuras versiones de HashMap no ampliarían AbstractMap, ya que probablemente algún código por ahí que espera HashMap sea asignable a AbstractMap.)
Es redundante, pero no se pierde nada. Si no quieren implementar Map
en AbstractMap
en el futuro, todavía funcionará.
Excepto que es un cambio radical: en algún lugar alguien habrá hecho 'Map map = objectOfTypeAbstractMap'. –
Una cosa más es que AbstractMap es un detalle de implementación. Podría estar ausente en una versión futura del JDK de Oracle. Podría estar ausente en una versión actual del JDK de IBM. Pero ya sea que esté presente o no, el HashMap siempre debe ajustarse al contrato de la Lista. Por lo tanto, está explícitamente capturado en la declaración de clase, indicando 'HashMap implementa Mapa'
- 1. regla de Java para extiende e implementa
- 2. ¿Por qué Map no extiende la interfaz de Colección
- 3. ¿Por qué AbstractCollection no implementa equals()?
- 4. No se puede convertir un HashMap <String, String> en una interfaz que extiende Map <String, String>
- 5. Por qué java.util.Properties implementa Map <Object, Object> y no Map <String, String>
- 6. implementa vs extiende en genéricos en Java
- 7. ¿Por qué Java HashMap nativo en Clojure se ejecuta lentamente?
- 8. ¿Por qué ArrayList tiene "implementa la Lista"?
- 9. ¿Por qué usar un hashmap?
- 10. Genéricos de Java: ¿por qué se permite "extiende T" pero no "implementa T"?
- 11. ¿Por qué HttpServlet en Java implementa serializable?
- 12. Diferencia entre HashMap y Map en Java ...?
- 13. argumento de método se extiende clase implementa la interfaz
- 14. ¿Por qué HttpServlet implementa Serializable?
- 15. ¿Por qué AtomicInteger implementa Serializable
- 16. ¿Por qué mi HashMap permite duplicar claves?
- 17. Clase genérica e implementa interfaz
- 18. Asignación de Hashmap a Hashmap
- 19. Implementación interna de java.util.HashMap y HashSet
- 20. Java clase HashMap por valor
- 21. bucle infinito en java.util.HashMap
- 22. ¿Por qué los objetos personalizados no son claves equivalentes para un HashMap?
- 23. ¿Por qué el límite genérico "E implementa I" da como resultado un error de compilación?
- 24. ¿Por qué Maven (¿incorrectamente?) Implementa mi SNAPSHOT en los repositorios de lanzamiento e instantánea?
- 25. ¿Por qué puedo usar cadenas como claves en un HashMap?
- 26. ¿Por qué ArrayList implementa IList, ICollection, IEnumerable?
- 27. ¿Por qué se 'implementa' como 'como'?
- 28. ¿Por qué HttpSessionState no implementa IDictionary?
- 29. ¿Por qué java.util.List no implementa Serializable?
- 30. AutoMapper: ¿por qué usar Map over DynamicMap?
esencialmente la misma pregunta que esto: http://stackoverflow.com/questions/2165204/why-does-linkedhashsete-extend-hashsete-and-implement-sete - - versión corta: esta redundancia tiene un impacto en cómo se genera Javadoc. –
Me impulsaron a investigar, y en realidad, Javadoc no era el problema. Nueva versión corta: fue solo un error. –
Heh. Pregunté sobre esto hoy también. Me dijeron que era un "error bienintencionado" y que el razonamiento original era la interfaz versus la implementación que mencioné en mi respuesta. –