objeto metodos metodo manejo llamar instanciar genericos genericas generica estatico datos con comparar clases java generics static type-inference

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();