2017-06-20 4 views
-3

Tout en vérifiant le code open source, je plusieurs fois rencontrent des déclarations commeGoogle Goyave carte vs Java Util Carte

Map<String, List<String>> map = Maps.newHashMap(); 

Maps est du paquet com.google.common.collect.Maps (Google goyave)

Pourquoi ne pouvons-nous simplement utiliser la norme:

Map<String, List<String>> map = new HashMap<>(); 

à la place?

+1

Voir https://github.com/google/guava/wiki/CollectionUtilitiesExplained~~V~~3rd – chrylis

Répondre

6

Le point ici: avant Java introduit l'opérateur diamant, il fallait répétition le paramètre de type générique en allant pour

Map<Whatever> myMap = new HashMap<Whatever>() 

L'appel goyave vous a permis d'éviter de répéter Whatever. En d'autres termes: ceci n'est rien d'autre qu'une méthode de commodité qui n'est pas utile (et donc déconseillée) puisque Java a l'opérateur de diamant. Et c'est JavaDoc clearly explains ça.

newHashMap

statique HashMap newHashMap public()

...

Note pour Java 7 et versions ultérieures: cette méthode est maintenant inutile et doit être traitée comme dépréciée. Au lieu de cela, utilisez directement le constructeur HashMap, en profitant de la nouvelle syntaxe "diamond".

+1

« En d'autres termes: ce n'est rien, mais une méthode pratique qui n'est pas utile ». Vous avez raison et en fait, c'est le cas de nombreux concepts introduits par Java souvent derniers. Avec Java 8 qui apporte beaucoup d'améliorations tirées de la goyave (mais pas seulement), en fait beaucoup de classes et de méthodes de goyave ne sont plus nécessaires comme maintenant standard en Java. – davidxxx

+0

Non. Vous: les bons points ;-) – davidxxx

+0

Le moral est meilleur maintenant? :) – davidxxx

1

Votre question est posée par le JavaDoc:

Note pour Java 7 et versions ultérieures: cette méthode est maintenant inutile et doit être traitée comme dépréciée. Au lieu de cela, utilisez le constructeur HashSet directement, en profitant de la nouvelle syntaxe "diamond".