12
votes

Java.Util.HashMap - Pourquoi HashMap étend-t-il abstractmap et implémenter la carte?

Pourquoi HashMap étend-il abstractmap et implémenter la carte? L'extension abstractmap n'est pas suffisante, car l'abstractmap implémente la carte?


3 commentaires

essentiellement la même question que ceci: Stackoverflow.com/Questtions/2165204/... - Version courte: Cette redondance a une incidence sur la façon dont Javadoc est généré.


J'étais stimulé d'enquêter et, en fait, Javadoc n'était pas la question. Nouvelle version courte: c'était juste une erreur.


Il h. J'ai demandé à ce sujet aujourd'hui aussi. On m'a dit que c'était une "erreur bien intentionnée" et que le raisonnement initial était l'interface par rapport à la mise en œuvre que j'ai mentionnée dans ma réponse.


3 Réponses :


5
votes

Il est redondant. Je soupçonne que c'était fait pour des raisons de "documentation". HashMap implémente la carte et vous pouvez compter sur cela. Le fait qu'il étend abstractmap n'est sans doute qu'un détail de mise en œuvre. (Bien qu'il soit extrêmement improbable que les versions futures de HASHMAP ne prolongent pas abstractmap, car il y a probablement certains le code qui s'attend à ce que HASHMAP soit assignable à abstractmap.)


0 commentaires

0
votes

Il est redondant, mais ne fait pas mal. S'ils ne veulent pas mettre en œuvre mapper dans abstractmap à l'avenir, cela fonctionnera toujours.


1 commentaires

Sauf que c'est un changement de rupture - quelque part quelqu'un aura effectué map map = ObjectOftypeAstractMap .



0
votes

Une dernière chose est que l'abstractmap est un détail de mise en œuvre. Il pourrait être absent dans une future version de JDK d'Oracle .. Cela pourrait être absent dans une version actuelle de l'IBM's JDK .. Mais que ce soit présent ou non, le hashmap devrait toujours être conforme au contrat de liste .. donc, il est explicitement explicitement Capturé en déclaration de classe en spécifiant 'HASHMAP implémente la carte'


0 commentaires