Je sais que le sujet peut être un peu in advance
comme le JDK8 n'est pas encore sorti (et pas pour l'instant en tout cas ) mais je lisais quelques articles sur les expressions Lambda et particulièrement la partie liée à la nouvelle API de collecte connue sous le nom de Stream.
Voici l'exemple tel qu'il est donné dans le Article du magazine Java (c'est un algorithme de la population des loutres..) :
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());
Ma question est la suivante : que se passe-t-il si, au milieu de l'itération interne Set, l'une des loutres est nulle ?
Je m'attendrais à ce qu'une exception NullPointerException soit levée mais peut-être suis-je encore coincé dans le paradigme de développement précédent (non fonctionnel), quelqu'un peut-il m'éclairer sur la façon dont cela devrait être traité ?
Si cela déclenche réellement une exception NullPointerException, je trouve cette fonctionnalité assez dangereuse et il faudra l'utiliser uniquement comme ci-dessous :
- Développeur pour s'assurer qu'il n'y a pas de valeur nulle (peut-être en utilisant un précédent . .filter(o -> o != null))
- Développeur pour s'assurer que l'application n'est jamais générer de null otter ou un objet spécial NullOtter à traiter.
Quelle est la meilleure option, ou toute autre option ?