Capturando comodines en genéricos de Java

Desdeesta Tutorial de Oracle Java:

El ejemplo de WildcardError produce un error de captura cuando se compila:

public class WildcardError {

    void foo(List<?> i) {
        i.set(0, i.get(0));
    }
}

Después de esta demostración de error, solucionan el problema utilizando un método auxiliar:

public class WildcardFixed {
    void foo(List<?> i) {
        fooHelper(i);
    }

    // Helper method created so that the wildcard can be captured
    // through type inference.
    private <T> void fooHelper(List<T> l) {
        l.set(0, l.get(0));
    }
}

Primero, dicen que el parámetro de entrada de lista (i) es visto como unObject:

En este ejemplo, el compilador procesa eli&nbsp;parámetro de entrada como de tipo Objeto.

Porqué entoncesi.get(0)&nbsp;no devuelve unObject? Si ya fue pasado como tal?

Además, ¿cuál es el punto de usar un<?>&nbsp;cuando entonces tienes que usar un método de ayuda usando<T>. No sería mejor usar directamenteT&nbsp;¿Qué se puede inferir?