enlace automático (inferencia de tipos) de tipos genéricos por el compilador
el siguiente código tiene un error de compilación en la línea de t3:
public <E> List<E> getList()
{
return new ArrayList<E>();
}
public <T> void first()
{
List<T> ret = new ArrayList<T>();
List<T> list = getList();
T t1 = ret.get(0);
T t2 = list.get(0);
T t3 = getList().get(0);
}
El mensaje de error es:No coinciden los tipos: no se puede convertir de Objeto a T
Sé que puedo solucionar el problema usando la conversión manual o manual, mis preguntas son:¿Es tan difícil para el compilador hacer un enlace automático? ¿Hay algún caso de que falle?
Editar: se agregó el mensaje de error.
Editar: se agregó otro ejemplo de cómo no se produjo el error.
Editar: eliminó el segundo ejemplo porque era confuso, dejó la pregunta más clara.