de Java llamada al método puede ser parametrizado como en el siguiente código:¿Cuándo es útil una llamada a un método parametrizado?
class Test
{
<T> void test()
{
}
public static void main(String[] args)
{
new Test().<Object>test();
// ^^^^^^^^
}
}
descubrí que esto es posible desde el diálogo de configuración de Eclipse Java formateador y se pregunta si hay algún casos en que esto sea útil o necesario.
EDITAR
Sobre la base de una excelente respuesta de Arne me encontré con la siguiente conclusión:
Además de la seguridad tipo mejorado como ejemplo de Arne ilustra una llamada al método con parámetros permite especificar el tipo base común de los métodos argumentos que deberían ser el tipo de los elementos del contenedor. Normalmente, el compilador hace referencia automáticamente a este tipo al tipo de base común más específico. Al parametrizar la llamada al método, este comportamiento puede ser anulado. Una llamada a un método parametrizado puede ser necesaria si el compilador hace referencia a múltiples tipos comunes.
El siguiente ejemplo demuestra que el comportamiento:
import java.util.Arrays;
import java.util.List;
class Test
{
public static void main(String[] args)
{
Integer a=new Integer(0);
Long b=new Long(0);
List<Object> listError=Arrays.asList(a, b);
//error because Number&Comparable<?> is not Object
List<Object> listObj=Arrays.<Object>asList(a, b);
List<Number> listNum=Arrays.<Number>asList(a, b);
List<Comparable<?>> listCmp=Arrays.<Comparable<?>>asList(a, b);
}
}
Este comportamiento se define en los párrafos Especificación del lenguaje Java 8.4.4 Tercera Edición y 15.12.2.7 pero no fácil de entender.
¿Soy solo yo el que piensa que es extraño cómo todos en este hilo parecen pensar que un "método parametrizado" debe ser un método genérico? Un método que tiene parámetros declarados es un método "parametrizado". Un método genérico es simplemente otro método parametrizado donde el tipo es uno de esos parámetros. ¿O me he perdido algo? –
¡Es perfecto! En retrospectiva, el título probablemente debería haber sido "¿Cuándo es útil una llamada a un método con argumentos tipo que no pueden inferirse?" –