автоматическое связывание (вывод типов) обобщенных типов компилятором
следующий код имеет ошибку компиляции в строке 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);
}
Сообщение об ошибке:Несоответствие типов: невозможно преобразовать объект в T
Я знаю, что могу решить проблему, используя приведение или ручное связывание, мои вопросы:это так сложно для компилятора сделать автоматическое связывание, есть ли случай, что он потерпит неудачу?
Редактировать: добавлено сообщение об ошибке.
Редактировать: добавлен еще один пример, как ошибка не произошла.
Редактировать: убрал второй пример, потому что он сбивал с толку, сделал вопрос более понятным.