2008-10-03 9 views

Respuesta

31

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

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) –

1
List<User> users = Collections.emptyList(); 
1

Después de creatin En la lista vacía, recomendaría almacenarla como una constante en lugar de crear una nueva cada vez.

Además, existen beneficios de rendimiento al usar Collections.emptyList() frente a new ArrayList(0), aunque la diferencia es probablemente pequeña. La lista devuelta por emptyList() está optimizada para ser una lista vacía inmutable. Por ejemplo, el método size() simplemente devuelve 0, en lugar de una búsqueda de campo o lo que sea que haga ArrayList.

Cuestiones relacionadas