Llamando a métodos genéricos estáticos

Me he encontrado con una situación curiosa que involucra métodos genéricos estáticos. Este es el código:

class Foo<E>
{
    public static <E> Foo<E> createFoo()
    {
        // ...
    }
}

class Bar<E>
{
    private Foo<E> member;

    public Bar()
    {
        member = Foo.createFoo();
    }
}

Cómo es que no tengo que especificar ningún tipo de argumento en la expresiónFoo.createFoo()? ¿Es esto algún tipo de inferencia de tipos? Si quiero ser explícito al respecto, ¿cómo puedo especificar el argumento de tipo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta