web-dev-qa-db-fra.com

Impossible d'instancier la carte ... eh bien pourquoi pas?

Map<String, ArrayList<Pair<String, Integer>>> k = new  Map<String, ArrayList<Pair<String, Integer>>>();

Cette ligne est dans mon code. Je voudrais instancier une carte qui contient une chaîne puis une liste de paires de chaînes et de nombres entiers.

Pair est une classe que j'ai écrite qui se trouve dans mon package.

J'obtiens "Impossible d'instancier le type Map >> ();

Pourquoi pas? Cela me semble raisonnable ...

33

Le Map intégré est une interface qui ne peut pas être instanciée. Vous pouvez choisir entre de nombreuses implémentations de classes concrètes sur le côté droit de votre mission, telles que:

  • ConcurrentHashMap
  • HashMap
  • LinkedHashMap
  • TreeMap

et plein d'autres. Javadocs pour Map répertorie de nombreuses implémentations concrètes directes.

56
rgettman

Les interfaces ne peuvent pas être instanciées Vous devez utiliser une classe concrète implémentant l'interface Essayez quelque chose comme ça

Map<String, ArrayList<Pair<String, Integer>>> k = new  HashMap<String, ArrayList<Pair<String, Integer>>>();