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