Pregunta

Resumen prácticamente lo dice todo. He aquí el fragmento correspondiente de código en ImmutableList.createFromIterable():

  if (element == null) {
    throw new NullPointerException("at index " + index);
  }

Me he encontrado con esto varias veces y no puedo ver por qué una función de biblioteca de propósito general debe imponer esta limitación.

Editar 1: por "uso general", yo sería feliz con un 95% de los casos. Pero no creo que he escrito 100 llamadas a ImmutableList.of() todavía, y ha sido mordido por esto más de una vez. Tal vez soy un caso atípico, sin embargo. :)

Editar 2: Creo que mi gran queja es que esto crea un "hipo" al interactuar con colecciones java.util estándar. Como usted ha señalado en su charla, los problemas con nulls en colecciones pueden aparecer muy lejos de donde se insertan los valores nulos. Pero si tengo una larga cadena de código que pone nulos en una colección estándar en un extremo y los maneja adecuadamente en el otro, entonces yo soy incapaz de sustituir una clase de colecciones de Google en cualquier punto a lo largo del camino, ya que de inmediato voy lanzar una NullPointerException.

¿Fue útil?

Solución

Lo he explicado en el punto de este video de 25 minutos: http://www.youtube.com/watch?v=ZeO_J2OcHYM

Lo siento por la respuesta perezosa, pero esto es después de todo, sólo un "por qué" (podría decirse que no es apropiado para Stackoverflow?).

EDIT: Este es otro punto que no estoy seguro de haber dejado claro en el video: del total (en todas código Java del mundo), la cantidad de código extra que tiene que ser por escrito para aquellos casos nulos amigable para usar los viejos recursos Collections.unmodifiableList(Arrays.asList(...)) etc. está abrumado por el total (a través de todo el código Java del mundo) la cantidad de checkArgument(!foos.contains(null)) adicional llama a cada uno tendría que añadir que, si nuestras colecciones no se cuidan de que para usted. La mayor parte, con diferencia, los usos de una colección que no se derivarán nulos estén presentes, y realmente debe fallar rápidamente si hay alguno.

Otros consejos

En general, en Google Colecciones son los desarrolladores del grupo que no creen que los nulos deben ser un parámetro de uso general se espera.

Una de las razones es que permite funciones que trabajan en la lista de no tener que comprobar cada elemento de Null, mejorando significativamente el rendimiento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top