Bonjour chers développeurs Java,
Je sais que le sujet peut être un peu in advance
car 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 en particulier la partie liée à la nouvelle API de collection connue sous le nom de Stream.
Voici l'exemple donné dans l' article de Java Magazine (il s'agit d'un algorithme de population de 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 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 lancée, mais je suis peut-être toujours 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 géré?
Si cela lève vraiment une NullPointerException, je trouve la fonctionnalité assez dangereuse et devra être utilisée 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 ne génère jamais une loutre nulle ou un objet NullOtter spécial à traiter.
Quelle est la meilleure option ou toute autre option?
Merci!