Как декларация HashMap выражается в этой области? Должно быть:
HashMap<String, ArrayList> dictMap
Если нет, предполагается, что это Объекты.
Например, если ваш код:
HashMap dictMap = new HashMap<String, ArrayList>();
...
ArrayList current = dictMap.get(dictCode);
это не сработает. Вместо этого вы хотите:
HashMap<String, ArrayList> dictMap = new HashMap<String, Arraylist>();
...
ArrayList current = dictMap.get(dictCode);
Способ работы дженериков заключается в том, что информация о типе доступна компилятору, но недоступна во время выполнения. Это называется стиранием типа. Реализация HashMap (или любая другая универсальная реализация) имеет дело с Object. Информация о типе предназначена для проверки безопасности типов во время компиляции. См. Общая документация .
Также обратите внимание, что ArrayList
также реализован как универсальный класс, и, таким образом, вы можете указать и там тип. Предполагая, что ваш ArrayList
содержит ваш класс MyClass
, строка выше может быть:
HashMap<String, ArrayList<MyClass>> dictMap