相关疑难解决方法(0)

我们应该如何为空值管理jdk8流

你好Java开发人员,

我知道主题可能有点 in advance因为JDK8尚未发布(现在还不是.)但我正在阅读一些关于Lambda表达式的文章,特别是与新集合API相关的部分,称为Stream.

以下是Java Magazine文章中给出的示例(它是一个水獭种群算法..):

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());
Run Code Online (Sandbox Code Playgroud)

我的问题是如果在Set内部迭代的中间,其中一个otter为null会发生什么?

我希望抛出NullPointerException,但也许我仍然坚持以前的开发范例(非功能),有人可以启发我应该如何处理它?

如果这确实抛出了NullPointerException,我发现该功能非常危险,只能如下所示:

  • 开发人员确保没有空值(可能使用以前的.filter(o - > o!= null))
  • 开发人员确保应用程序永远不会生成null otter或特殊的NullOtter对象来处理.

什么是最佳选择,或任何其他选择?

谢谢!

java null java-8 java-stream

78
推荐指数
5
解决办法
10万
查看次数

标签 统计

java ×1

java-8 ×1

java-stream ×1

null ×1