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ón Foo.createFoo()? ¿Es esto algún tipo de inferencia de tipo? Si quiero ser explícito al respecto, ¿cómo puedo especificar el argumento de tipo?
7
Le recomendaría que cambie el parámetro de tipo E del método createFoo. Porque, el parámetro de tipo E de la clase Foo es diferente al parámetro de tipo E del método createFoo ().
—
Gursel Koca
@GurselKoca Podría hacer explícitamente member = Foo. <E> createFoo (); requiriendo que sean iguales al tiempo de compilación.
—
George Xavier