Chamando métodos genéricos estáticos

Eu me deparei com uma situação curiosa envolvendo métodos genéricos estáticos. Este é o código:

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

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

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

Por que não preciso especificar argumentos de tipo na expressãoFoo.createFoo()? Isso é algum tipo de inferência de tipo? Se eu quiser ser explícito, como posso especificar o argumento type?

questionAnswers(1)

yourAnswerToTheQuestion