Como declarar um mapa com genéricos variáveis?

eu tenho umMap cujas chaves são do tipo genéricoKey<T>e os valores são do tipoList<T>. Se a chave é uma instância deKey<String>, o valor deve ser umList<String>e a mesma regra se aplica a qualquer outro par de valores-chave. Eu tentei o seguinte, mas não compila:

Map<T, List<T>> map;

No momento, tenho que declará-lo com genéricos "parciais":

Map<Object, List> map;

Eu sei que isso é ruim, mas atualmente não tenho melhor escolha. É possível usar genéricos nesta situação?

ATUALIZAR

Talvez eu não tenha expressado meu problema claramente. Eu quero um mapa que seja capaz de:

map.put(new Key<String>(), new ArrayList<String>());
map.put(new Key<Integer>(), new ArrayList<Integer>());

E o código a seguir não deve compilar:

map.put(new Key<String>(), new ArrayList<Integer>());

A chave e o valor devem sempre ter o mesmo tipo genérico, enquanto o tipo genérico pode ser qualquer, e obviamente estender um mapa não atende ao meu requisito.

questionAnswers(2)

yourAnswerToTheQuestion