de la siguiente manera:
List<User> users = Collections.emptyList();
El tipo de la lista de regresar de Collections.emptyList();
habrá inferido como String
debido a la mano del lado izquierdo de la asignación . Sin embargo, si usted prefiere no tener esta inferencia, se puede definir de forma explícita de la siguiente manera:
List<User> users = Collections.<User>emptyList();
En este caso particular, esto puede parecer redundante para la mayoría de la gente (de hecho, he visto muy poco código en la naturaleza que hace uso de argumentos de tipo explícitas), sin embargo, para un método con la firma: void doStuff(List<String> users)
sería perfectamente limpia para que uno invocan doStuff()
con un argumento de tipo explícita de la siguiente manera:
doStuff(Collections.<String>emptyList());
cada vez que escribe un argumento de tipo explícito en un método, dios mata a un gatito (creo que fue Josh Bloch quien dijo esto) –