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?