¿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?