Это - то, что я пытался сделать, но это дает мне предупреждение:
HashMap<String, String>[] responseArray = new HashMap[games.size()];
Безопасность с точки зрения типов: для выражения типа HashMap [] нужно неконтролируемое преобразование для приспосабливания HashMap []
Что дает? Это работает. Просто проигнорируйте это:
@SuppressWarnings("unchecked")
Нет, вы не можете параметризовать его. Однако я бы предпочел использовать List
вместо этого.
List<Map<String, String>> listOfMaps = new ArrayList<Map<String, String>>();
Чтобы узнать больше о коллекциях и картах, посмотрите этот учебник.
Спецификация языка Java, раздел 15.10, гласит:
Выражение создания массива создает объект, который является новым массивом, чьи элементы которого имеют тип, указанный PrimitiveType или ClassOrInterfaceType. Это является ошибкой времени компиляции, если ClassOrInterfaceType не обозначает reifiable type (§4.7).
и
Приведенные выше правила подразумевают, что элемент тип в выражении создания массива не может быть параметризованным типом, кроме чем неограниченный подстановочный знак.
Ближайшее, что вы можете сделать, это использовать непроверенное приведение, либо от исходного типа, как вы сделали, либо от беспредельного подстановочного знака:
HashMap<String, String>[] responseArray = (Map<String, String>[]) new HashMap<?,?>[games.size()];
Ваша версия явно лучше :-)
. У вас не может быть массива универсального типа. Вместо этого используйте Список
.