У меня есть Map
, ключи которого имеют универсальный тип Key<T>
, а значения имеют тип List<T>
. Если ключ является экземпляром Key<String>
, значение должно быть List<String>
, и то же правило применяется к любым другим парам значений ключа -. Я пробовал следующее, но оно не компилируется:
Map<T, List<T>> map;
В настоящее время я должен объявить его с помощью «частичных» дженериков :
Map<Object, List> map;
. Я знаю, что это плохо, но в настоящее время у меня нет лучшего выбора. Можно ли использовать дженерики в этой ситуации?
ОБНОВЛЕНИЕ
Возможно я не ясно выразил свою проблему. Мне нужна карта, способная:
map.put(new Key<String>(), new ArrayList<String>());
map.put(new Key<Integer>(), new ArrayList<Integer>());
И следующий код не должен компилироваться:
map.put(new Key<String>(), new ArrayList<Integer>());
Ключ и значение всегда должны иметь один и тот же универсальный тип, в то время как универсальный тип может быть любым, и, очевидно, расширение карты не соответствует моему требованию.