Возможно ли это в Java: Map‹SomeObject, Map‹SomeOtherObject››?

Возможно ли это в Java: Map<SomeObject, Map<SomeOtherObject>>? я пытаюсь Map<Integer, Map<String>> получить

"Неверное количество аргументов для типа Map; его нельзя параметризовать аргументами"

ошибка.


person davek    schedule 26.04.2010    source источник


Ответы (4)


Map сопоставляет ключи со значениями, поэтому Map<String> неверно. Так что вам нужно что-то вроде Map<String, Object>.

person cherouvim    schedule 26.04.2010
comment
извините - головная боль с моей стороны: я не заметил, что пропустил второй параметр! - person davek; 26.04.2010

Каждый Map должен быть параметризован по двум типам; ваша вторая (вложенная) карта имеет только одну.

person Carl Smotricz    schedule 26.04.2010

Вам нужен второй аргумент для вашего второго Map<>. Возможно, вы имели в виду Map<Integer, Map<String, String>>?

person sblom    schedule 26.04.2010

Нет, не совсем так. Вам нужно указать тип как для Key, так и для Value для второго "внутреннего" Map, это нормально:

Map<SomeObject, Map<SomeOtherObject, Object>>

Так же, как с внешним Map, где Key — это SomeObject, а Value — это внутренний Map. Итак, если вы добавите спецификацию значения для внутреннего Map, это будет нормально.

person Lars Andren    schedule 26.04.2010