¿Por qué los genéricos están completamente deshabilitados cuando ignora un tipo de parámetro?

Como seguimiento aesta preguntaprimero el fondo

Dada una clase con esta declaración:

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

Y una subclase que no usa el parámetro genérico:

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

Un método en SomeClass declarado de la siguiente manera:

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

Si la subclase llama al método como este:

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

El compilador se queja en esencia de que getMap devuelve un Mapa plano y hay una asignación no verificada a un Mapa genérico. ¿Por qué es este el caso? ¿Es esto una expectativa documentada con los genéricos, y hay una razón para ello?

Respuestas a la pregunta(2)

Su respuesta a la pregunta