Il linguaggio Java Specification, sezione 15.10, afferma:
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).
e
The rules above imply that the element type in an array creation expression cannot be a parameterized type, other than an unbounded wildcard.
Il più vicino si può fare è utilizzare un cast incontrollato, sia dal tipo grezzo, come avete fatto o da un carattere jolly illimitato:
HashMap<String, String>[] responseArray = (Map<String, String>[]) new HashMap<?,?>[games.size()];
La tua versione è chiaramente migliore :-)
Grazie. L'ho fatto funzionare usando una lista di mappe. Non mi piace ignorare gli avvertimenti. Nella mia esperienza, se ricevi un avvertimento, lo fai. L'unica cosa che non capisco è il motivo per cui lo dichiaro come un tipo di mappa, ma quando effettivamente lo istanziamo devo usare HashMap? Mappa responseMap; responseMap = new HashMap (); –
Joren
È un'interfaccia. Un progetto. Un contratto. Segui il link :) – BalusC
Perché preferiresti usare Lista di Mappe e poi una HashMap, per favore spiega. – Daniel