Как сделать массив hashmaps?

Это - то, что я пытался сделать, но это дает мне предупреждение:

HashMap<String, String>[] responseArray = new HashMap[games.size()];

Безопасность с точки зрения типов: для выражения типа HashMap [] нужно неконтролируемое преобразование для приспосабливания HashMap []

47
задан CaptJak 17 December 2015 в 21:13
поделиться

3 ответа

Что дает? Это работает. Просто проигнорируйте это:

@SuppressWarnings("unchecked")

Нет, вы не можете параметризовать его. Однако я бы предпочел использовать List> вместо этого.

List<Map<String, String>> listOfMaps = new ArrayList<Map<String, String>>();

Чтобы узнать больше о коллекциях и картах, посмотрите этот учебник.

56
ответ дан 26 November 2019 в 19:42
поделиться

Спецификация языка Java, раздел 15.10, гласит:

Выражение создания массива создает объект, который является новым массивом, чьи элементы которого имеют тип, указанный PrimitiveType или ClassOrInterfaceType. Это является ошибкой времени компиляции, если ClassOrInterfaceType не обозначает reifiable type (§4.7).

и

Приведенные выше правила подразумевают, что элемент тип в выражении создания массива не может быть параметризованным типом, кроме чем неограниченный подстановочный знак.

Ближайшее, что вы можете сделать, это использовать непроверенное приведение, либо от исходного типа, как вы сделали, либо от беспредельного подстановочного знака:

 HashMap<String, String>[] responseArray = (Map<String, String>[]) new HashMap<?,?>[games.size()];

Ваша версия явно лучше :-)

.
7
ответ дан 26 November 2019 в 19:42
поделиться

У вас не может быть массива универсального типа. Вместо этого используйте Список .

3
ответ дан 26 November 2019 в 19:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: