manejo - metodos genericos java
Llamar a métodos genéricos estáticos (1)
Me he topado 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 argumento de tipo en la expresión Foo.createFoo()
? ¿Es esto una especie de tipo de inferencia? Si quiero ser explícito al respecto, ¿cómo puedo especificar el argumento de tipo?
Sí, esto es una inferencia de tipo basada en el objetivo de la asignación, según la sección 15.12.2.8 de JLS . Para ser explícito, llamarías algo como:
Foo.<String>createFoo();