Java开发人员大家好,
我知道这个主题可能有点,in advance
因为JDK8尚未发布(无论如何现在还没有。),但是我正在阅读一些有关Lambda表达式的文章,尤其是与与称为Stream的新集合API相关的部分。
这是《Java杂志》文章中给出的示例(这是一种水獭种群算法。):
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());
我的问题是,如果在Set内部迭代的中间,水獭之一为null,会发生什么情况?
我希望抛出NullPointerException,但也许我还是停留在以前的开发范例(非功能性)中,有人可以启发我,因为应该如何处理?
如果这确实引发了NullPointerException,则我认为该功能非常危险,必须仅按以下方式使用:
- 开发人员确保没有null值(也许使用以前的.filter(o-> o!= null))
- 开发人员确保应用程序永远不会生成空水獭或特殊的NullOtter对象来处理。
最佳选择是什么,或其他任何选择?
谢谢!