Démystifier la distinction entre les objets HashMap et Map
En Java, les objets HashMap et Map semblent souvent interchangeables, ce qui suscite une confusion quant à leurs différences sous-jacentes . Pour clarifier, il n'y a pas de différence dans les objets eux-mêmes : dans les deux cas, vous obtenez un HashMap avec une clé String et une valeur Object.
La distinction réside dans l'interface que vous associez à l'objet. Lorsque vous déclarez l'objet sous la forme HashMap
Explorons un exemple pratique pour illustrer ce concept :
Considérons une classe nommée Foo qui initialise deux cartes internes, Things et moreThings, et les partage via des méthodes d'accès. Ces cartes sont initialement implémentées sous forme de HashMaps.
Maintenant, supposons qu'une sous-classe de Foo, SpecialFoo, utilise une méthode commune pour manipuler à la fois des choses et plus de choses. Cette méthode est définie avec la même interface que les méthodes d'accès (HashMap
Plus tard, si vous décidez de remplacer l'implémentation HashMap dans Foo par TreeMap, SpecialFoo rencontrera une erreur de compilation car le contrat a été violé : Foo fournit désormais des TreeMaps au lieu de HashMaps. Cela nécessite une révision de SpecialFoo.
Pour éviter une telle situation, il est prudent de déclarer les méthodes d'accès et les cartes internes en utilisant l'interface générale, Map
Le codage vers l'interface la plus générale est généralement moins fragile et plus adaptable. En adhérant à ce principe, vous conservez la flexibilité et évitez les erreurs imprévues lors de la mise en œuvre des modifications de votre base de code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!