Hola, compañeros desarrolladores de Java:
Sé que el tema puede ser un poco in advance
ya que el JDK8 aún no se ha lanzado (y no por ahora de todos modos ...) pero estaba leyendo algunos artículos sobre las expresiones Lambda y particularmente la parte relacionada con la nueva API de colección conocida como Stream.
Aquí está el ejemplo dado en el artículo de la Revista Java (es un algoritmo de población de nutrias ...):
Set<Otter> otters = getOtters();
System.out.println(otters.stream()
.filter(o -> !o.isWild())
.map(o -> o.getKeeper())
.filter(k -> k.isFemale())
.into(new ArrayList<>())
.size());
Mi pregunta es ¿qué sucede si en medio de la iteración interna de Set, una de las nutrias es nula?
Esperaría que se lanzara una NullPointerException, pero tal vez todavía estoy atrapado en el paradigma de desarrollo anterior (no funcional), ¿alguien puede aclararme cómo se debe manejar esto?
Si esto realmente arroja una NullPointerException, encuentro la función bastante peligrosa y tendré que usarla solo como se muestra a continuación:
- Desarrollador para asegurarse de que no haya un valor nulo (tal vez usando un .filter anterior (o -> o! = Null))
- Desarrollador para garantizar que la aplicación nunca genere una nutria nula o un objeto NullOtter especial con el que lidiar.
¿Cuál es la mejor opción o cualquier otra opción?
¡Gracias!