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