Как объявить карту с универсальными переменными?

у меня есть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>());

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

Ответы на вопрос(2)

Ваш ответ на вопрос