Por que os genéricos são completamente desativados quando você ignora um tipo de parâmetro?

Como um acompanhamento paraessa questãoprimeiro o fundo

Dada uma classe com esta declaração:

<code>public class SomeClass<T>
</code>

E uma subclasse que não usa o parâmetro genérico:

<code>public class SomeSubClass extends SomeClass
</code>

Um método no SomeClass declarado da seguinte maneira:

<code>protected Map<String, Object> getMap(Object param) {
}
</code>

Se a subclasse chamar o método assim:

<code>Map<String, Object> val = getMap(param);
</code>

O compilador reclama em essência que getMap retorna um mapa simples e há uma atribuição não verificada em um mapa genérico. Por que isso acontece? Isso é uma expectativa documentada com o Generics, e há uma razão para isso?

questionAnswers(2)

yourAnswerToTheQuestion