La spécification du langage Java, section 15.10, déclare:
An array creation expression creates an object that is a new array whose elements are of the type specified by the PrimitiveType or ClassOrInterfaceType. It is a compile-time error if the ClassOrInterfaceType does not denote a reifiable type (§4.7).
et
The rules above imply that the element type in an array creation expression cannot be a parameterized type, other than an unbounded wildcard.
Le plus proche que vous pouvez faire est d'utiliser une distribution non contrôlée, que ce soit à partir du type cru, comme vous l'avez fait ou à partir d'un caractère générique illimité:
HashMap<String, String>[] responseArray = (Map<String, String>[]) new HashMap<?,?>[games.size()];
Votre version est nettement meilleure :-)
Merci. Je l'ai eu en utilisant une liste de cartes. Je n'aime pas ignorer les avertissements. D'après mon expérience, si vous recevez un avertissement, allez-y. La seule chose que je ne comprends pas, c'est pourquoi je le déclare comme un type Map, mais quand je l'instancie réellement, je dois utiliser HashMap? Carte responseMap; responseMap = new HashMap (); –
Joren
C'est une interface. Un plan. Un contrat. Suivez le lien :) – BalusC
Pourquoi préférez-vous utiliser la liste des cartes puis un HashMap, s'il vous plaît expliquer. – Daniel